4.echo命令用法

49 阅读5分钟

四.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 命令来输出
比如:

变量解释
$0shell 或者shell脚本的名字
$*表示执行脚本传入参数的列表(不包括$0)
$#表示执行脚本传入参数的个数
$$表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
$@表示执行脚本传入参数的所有个数(不包括$0)
$1表示第一个参数

如果想把shell脚本写好,这个表格一定要仔细诵读记忆。

3.6echo 在脚本中的应用

在脚本中,我们也会用到echo命令,比如我们要写如下的需求:

写一个宝塔清单列表脚本

  1. 定义一个脚本,以.sh结尾。 menu.sh
  2. 输出以下内容,供用户选择:
请从以下选项中,选出你要进行的操作:
       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的时候执行什么操作。

💕💕💕 好啦,这就是今天要分享的全部内容了✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~