脚本是什么意思 拍摄脚本是什么意思
通过前面三篇的简单介绍
带你了解企业是如何编写脚本的-第一篇:认识脚本
带你了解企业是如何编写脚本的-第2篇:Shell脚本规范
带你了解企业是如何编写脚本的-第3篇:脚本的各种执行方式区别
我们已经可以了解到关于Shell脚本的一些基础知识,俗话说:学而不用则废 用而不学则滞,所以从这篇开始,我们将从最简单的一些案例开始学习!
本期主要知识点:echo 自动化 单双引号、转义
自动化
首先我们在学习脚本之前要搞清楚为啥要学这个东西,是为了装X吗?当然不是,是因为脚本能提高效率,而效率的最高境界就是自动化,所以我们在接下来的学习中可以把“自动化”当做一个目标,抛弃之前的“手动”操作,例如:vim命令,所以本文主要教你如果“抛弃”vim!
echo的作用(简单案例)
echo的主要作用是:打印
例如把“hello world”打印到屏幕上:
打印到屏幕
同时,也支持打印(写入)到文件(当文件不存在则创建)中:
把内容打印到文件中
上面是两个简单的案例,那么现在开始正式了解这个命令的用法。
了解echo
使用Linux最基本的一个技巧就是: --help,所以我们可以先看一下这个echo的--help是怎样的,命令如下:
/bin/echo --help
查看echo命令的帮助信息
从帮助信息中我们可以看到,这个命令的参数是比较少的,所以学起来是非常简单的,下面对这三个参数进行讲解:
了解-n参数
-n参数 不尾随换行符,这个用法比较少见(对于我而言基本不用)
通过下面这段简单的脚本案例你就可以知道它的作用了:
-n在第一行
从结果可以看出,我的脚步内容共有两行,所以按照一般情况下是需要输出两行内容才是正确的,可是在加了-n之后,两行内容直接变成了一行(没看懂是吗?继续往下)
单独一个案例可能不太好理解,尤其是没怎么接触过这个人,没事,我们继续往下看:
-n在第二行
通过调换位置的执行结果对比我们可以发现,当我把-n放在第二行之后,第一行的内容就变成了独立的一行输出,而第二行(有-n)的则跟着终端信息一起输出了,然后终端的格式就被这个-n打乱了,那么为啥会这样呢?这个就涉及到-e的内容了,下面先了解一个-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=&39;hosts&39;
echo &34;请输入一个IP地址&34;
read ip
echo &34;请输入域名&34;
read domain
echo -e &34;即将写入下面的主机映射信息到hosts文件,输入y确认写入
$ip $domain &34;
read Y
echo -e &34;当前文件内容&34;
cat $host
if [[ &34;$Y&34; == &39;y&39; ]];then
echo &34;$ip $domain&34; >> $host
echo &34;修改后内容如下&34;
cat $host
else
echo &39;取消写入&39;
fi
通过echo写入域名映射信息
总结:
echo命令不仅可以输出提示信息,使得脚本的使用交互更加友好,同时在一定程度上还可以代替vim进行一些写入操作,参数较少,学习起来相对比较简单,而平时使用终端也不用每次都通过vim写入内容到文件中,大大的提高了效率,但是要注意覆盖与追加的语法,切勿混用!
此外,echo命令还经常用于获取一些变量值,例如获取当前用户名、当前使用的Shell、当前的path路径之类:
获取系统变量
通过echo命令可以让我们在使用Linux系统的时候大大提高效率,同时在脚本中也是经常需要使用的一个工具,但是只用echo就想抛弃vim是肯定不可能的,后续将会介绍更多工具的用法实现完全抛弃vim,实现全自动化修改。
相关链接:
Linux、编程界的哆啦A梦网站,你想要的任何命令这里都有
Shell脚本高级语法:如何更方便的打印彩色字体