2026年01月20日/ 浏览 11
通过前面三篇的简单介绍
带你了解企业是如何编写脚本的-第3篇:脚本的各种执行方式区别
我们已经可以了解到关于Shell脚本的一些基础知识,俗话说:学而不用则废 用而不学则滞,所以从这篇开始,我们将从最简单的一些案例开始学习!
首先我们在学习脚本之前要搞清楚为啥要学这个东西,是为了装X吗?当然不是,是因为脚本能提高效率,而效率的最高境界就是自动化,所以我们在接下来的学习中可以把“自动化”当做一个目标,抛弃之前的“手动”操作,例如:vim命令,所以本文主要教你如果“抛弃”vim!
echo的主要作用是:打印
例如把“hello world”打印到屏幕上:
打印到屏幕
同时,也支持打印(写入)到文件(当文件不存在则创建)中:
把内容打印到文件中
上面是两个简单的案例,那么现在开始正式了解这个命令的用法。
使用Linux最基本的一个技巧就是: --help,所以我们可以先看一下这个echo的--help是怎样的,命令如下:
/bin/echo --help查看echo命令的帮助信息
从帮助信息中我们可以看到,这个命令的参数是比较少的,所以学起来是非常简单的,下面对这三个参数进行讲解:
-n参数 #不尾随换行符,这个用法比较少见(对于我而言基本不用)
通过下面这段简单的脚本案例你就可以知道它的作用了:
-n在第一行
从结果可以看出,我的脚步内容共有两行,所以按照一般情况下是需要输出两行内容才是正确的,可是在加了-n之后,两行内容直接变成了一行(没看懂是吗?继续往下)
单独一个案例可能不太好理解,尤其是没怎么接触过这个人,没事,我们继续往下看:
-n在第二行
通过调换位置的执行结果对比我们可以发现,当我把-n放在第二行之后,第一行的内容就变成了独立的一行输出,而第二行(有-n)的则跟着终端信息一起输出了,然后终端的格式就被这个-n打乱了,那么为啥会这样呢?这个就涉及到-e的内容了,下面先了解一个-e参数
在编程语言中,有个叫做“转义”的形容词,通俗点来说,转义其实就是转变含义。
例如我们的笔记本键盘按键中经常用到的感叹号、@、#之类的符号,这些符号都需要我们先按“shift”然后再按“1”才能输出一个感叹号。
在这里,shift就相当于我们的转义符,而被转义的对象都会有一个默认值,例如感叹号的默认值是阿拉伯数字:1,只有我们加上转义符(shift)才能得到感叹号(!)。
下面就演示一下:
对比转义与非转义的效果
在Shell语言中,换行的输出是通过: \n 完成的,所以在第一条没有加入-e的输出结果中,\n被当成一个普通的字符串进行输出,而第二行中由于加入了-e,所以\n就变成一个换行的符号,从而实现换行的效果。更多转义符可参考:
\\ 反斜杠 \a 响铃声 \b 退格 \c 不再产生新的输出 \e 转义符 \f 换页 \n 新行 \r 回车 \t 水平制表符 \v 竖直制表符 \0NNN 字节数以八进制数 NNN (1至3位)表示 \xHH 字节数以十六进制数 HH (1至2位)表示echo命令的使用常常会和引号进行配合,而引号的用法也有一些区别需要注意,下面分别对不使用引号和使用单双引号进行演示,从而了解他们直接到不同之处。
不使用引号
从结果来看,如果我们不增加引号,那么只能输出与echo同一行的内容,无法输出第二行的内容
使用单引号
从结果来看,使用单引号之后,第二行内容被原样输出(变量无法起作用),相比没有引号而言,起码是没有命令错误的提示,能够正常完成输出。
使用双引号
双引号+转义
上面的案例都是如何实现打印内容,而打印内容也可以分为两种情况,一种是打印到屏幕,一种是写入文件(可以通过组合命令实现同时打印到屏幕和文件),下面演示一下:
首先我们先查看一下本地的一个文件内容:
查看本地文件内容
然后我们使用echo进行打印内容到屏幕:
打印信息到屏幕
接着我们通过echo把这些内容写入到文件[ hello ]中,写入的方式是通过 >> 指向需要进行操作的文件
> #覆盖原内容
>> #追加内容
通过>>追加内容
执行完成之后,通过cat命令查看文件内容可以看到,我们刚才打印到内容已经追加上去了,然后继续使用覆盖的操作
覆盖原内容
可以看到,通过覆盖的方式写入之后,原来的内容都不存在了(所以要谨慎点,多备份,小心数据丢失)
操作全记录:
写入文件
下面将通过一个简单的脚本对echo的应用进行一个演示:
#!/bin/bash host=hosts echo "请输入一个IP地址" read ip echo "请输入域名" read domain echo -e "即将写入下面的主机映射信息到hosts文件,输入y确认写入 $ip $domain " read Y echo -e "当前文件内容" cat $host if [[ "$Y" == y ]];then echo "$ip $domain" >> $host echo "修改后内容如下" cat $host else echo 取消写入 fi通过echo写入域名映射信息
总结:
echo命令不仅可以输出提示信息,使得脚本的使用交互更加友好,同时在一定程度上还可以代替vim进行一些写入操作,参数较少,学习起来相对比较简单,而平时使用终端也不用每次都通过vim写入内容到文件中,大大的提高了效率,但是要注意覆盖与追加的语法,切勿混用!
此外,echo命令还经常用于获取一些变量值,例如获取当前用户名、当前使用的Shell、当前的path路径之类:
获取系统变量
通过echo命令可以让我们在使用Linux系统的时候大大提高效率,同时在脚本中也是经常需要使用的一个工具,但是只用echo就想抛弃vim是肯定不可能的,后续将会介绍更多工具的用法实现完全抛弃vim,实现全自动化修改。
相关链接: