四.echo
1.命令介绍
作用: echo命令能将指定文本显示在Linux命令行上,或者通过重定向符写入到指定的文件中。
语 法:echo [-ne][字符串] / echo [–help][–version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
2.常用参数
查看一下帮助,使用 help echo 来查看,这里要注意,如果你使用 echo --help ,变成了输出help
[root@jichu ~]# echo --help
--help
于是,对于 echo命令,我们查看帮助,可以使用 help echo
[root@jichu ~]# help echo
echo: echo [-neE] [参数 ...]
将参数写到标准输出。
在标准输出上显示 ARG 参数后跟一个换行。
选项:
-n 不要追加换行
-e 启用下列反斜杠转义的解释
-E 显式地抑制对于反斜杠转义的解释
`echo' 对下列反斜杠字符进行转义:
\a 警告(响铃)
\b 退格
\c 抑制更多的输出
\e 转义字符
\f 格式提供
\n 换行
\r 回车
\t 横向制表符
\v 纵向制表符
\\ 反斜杠
\0nnn 以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是
0到3个八进制数字
\xHH 以 HH (十六进制)为值的八比特字符。HH可以是
一个或两个十六进制数字
退出状态:
返回成功除非有写错误发生。
整理后,变成如下的参数:
-n 不要自动换行
-E 不解析转义符
-e 让转义符展示自己的特性。
以下字符,不加-e显示为文字,加了-e显示转义符自身特性:
- \a 发出警告声
- \c最后不加换行符
- \n 换行且光标仍旧停留在原来的位置
- \t 插入tab键
- \r 光标移动到首行且不换行
具体的其他参数,可以使用man echo 来查询
3.常用案例
3.1直接输出文本内容
此时不需要加任何参数,直接把要输出的内容写在 echo 后面,需要注意的是,如果要输出的内容有空格,尽可能加上 双引号:
代码如下:
[root@jichu ~]# echo "klh"
klh
## 输出helloworld
[root@jichu ~]# echo "helloword"
helloword
[root@jichu ~]#
3.2使用echo追加内容到某个文件
要追加内容到某个文件中, 可以使用>> , 使用后会在文本后面继续追加内容,若文件中原来就有内容也不会被覆盖掉。
注意: > 表示覆盖,如果直接使用> 后,文本的内容会被覆盖为新的内容。
[root@jichu ~]# mkdir test
[root@jichu ~]# cd test
[root@jichu test]# ls
[root@jichu test]# echo jichu >>a.txt
[root@jichu test]# cat a.txt
jichu
# 使用 > 表示覆盖
[root@jichu test]# echo aaa >a.txt
## 可以看到最后的结果为aaa
[root@jichu test]# cat a.txt
aaa
[root@jichu test]#
3.3使用-n确保不换行
-n 表示不换行输出,如下,当我们同时执行两条命令的时候,没加-n ,就会变成来两行,加了-n 就会变成一行
[root@jichu test]# echo jichu;echo "study yunjisuan"
jichu
study yunjisuan
[root@jichu test]# echo -n jichu;echo "study yunjisuan"
jichustudy yunjisuan
[root@jichu test]#
3.4打印变量
在shell脚本中,我们经常有变量的概念,定义一个变量就是 变量名=内容
比如 name=jichu
[root@jichu test]# name=jichu
[root@jichu test]# echo $name
jichu
[root@jichu test]#
可以看到,linux中的变量就是使用 echo ${变量名} 来输出 ,此处的{} 可以不加
3.5判断命令是否执行成功
echo $? 可以判断文件是否执行成功。
结果为0证明执行成功,结果不为零证明执行没有成功
备注:什么是进程的生命周期?
当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来通知内核它已经做好“消亡”的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。按照惯例,0用来表示正常的或者说“成功”的终止。
也就是说我们在执行 echo $? 时反回的值就是进程的退出码。而且,这个退出码是由刚刚执行完的进程提供给系统内核的。
# ping一下百度,看看是否执行成功
[root@jichu test]# ping -c1 -w1 www.baidu.com
PING www.baidu.com (39.156.66.18) 56(84) bytes of data.
64 bytes from 39.156.66.18: icmp_seq=1 ttl=128 time=32.0 ms
--- www.baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 32.051/32.051/32.051/0.000 ms
[root@jichu test]# echo $?
0 // 结果为0证明执行成功
[root@jichu test]# ping 192.168.244.132
PING 192.168.244.132 (192.168.244.132) 56(84) bytes of data.
64 bytes from 192.168.244.132: icmp_seq=1 ttl=64 time=1.03 ms
64 bytes from 192.168.244.132: icmp_seq=3 ttl=64 time=2.17 ms
^C
--- 192.168.244.132 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3032ms
rtt min/avg/max/mdev = 1.039/1.923/2.294/0.513 ms
[root@jichu test]# echo $?
0 // 结果为0证明执行成功
[root@jichu test]# ping 192.168.244.133
PING 192.168.244.133 (192.168.244.133) 56(84) bytes of data.
From 192.168.244.131 icmp_seq=1 Destination Host Unreachable
^C
--- 192.168.244.133 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3018ms
pipe 4
[root@jichu test]# echo $?
1 //结果不为零证明执行执行失败
另外:还有很多常用的变量,可以使用echo 命令来输出
比如:
变量 | 解释 |
---|---|
$0 | shell 或者shell脚本的名字 |
$* | 表示执行脚本传入参数的列表(不包括$0) |
$# | 表示执行脚本传入参数的个数 |
$$ | 表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号) |
$@ | 表示执行脚本传入参数的所有个数(不包括$0) |
$1 | 表示第一个参数 |
如果想把shell脚本写好,这个表格一定要仔细诵读记忆。
3.6echo 在脚本中的应用
在脚本中,我们也会用到echo命令,比如我们要写如下的需求:
写一个宝塔清单列表脚本
- 定义一个脚本,以.sh结尾。 menu.sh
- 输出以下内容,供用户选择:
请从以下选项中,选出你要进行的操作:
1. 安装Apache
2. 安装 MySQL
3. 安装Php
4. 安装LAMP
5. 安装Wordpress
代码实现:
[root@jichu ~]# vim menu.sh
[root@jichu ~]# cat menu.sh
#!/bin/bash
echo "请从以下选项中,选出你要进行的操作:"
echo "1. 安装Apache";echo "2. 安装 MySQL" ;echo "3. 安装Php";echo "4. 安装LAMP";echo "5. 安装Wordpress"
执行过程:
[root@jichu ~]# chmod +x menu.sh
[root@jichu ~]# ./menu.sh //sh menu.sh
请从以下选项中,选出你要进行的操作:
1. 安装Apache
2. 安装 MySQL
3. 安装Php
4. 安装LAMP
5. 安装Wordpress
可以看到echo命令是自动换行的,显示出来了宝塔面板,这种后续可以再优化,比如当用户输入1的时候可以,执行什么操作,输入2的时候执行什么操作。
💕💕💕 好啦,这就是今天要分享的全部内容了✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~