shell脚本编程基础(二)

重定向输入和输出

想要保存某个命令的输出,可以将命令的输出重定向到另一个位置,同时也可以将文件重定向到命令输入。
输出重定向:>
在这里插入图片描述
重定向操作符创建了一个文件test6(通过默认的umask设置),并将date命令的输出重定向
到该文件中。如果输出文件已经存在了,重定向操作符会用新的文件数据覆盖已有文件。

不想覆盖文件原有内容,而是想要将命令的输出追加到已有文件中,可以用双大于号( >>)来追加数据。

输入重定向
输入重定向将文件的内容重定向到命令:<
在命令行上,命令总是在左侧,而重定向符号“指向”数据流动的方向。
在这里插入图片描述
wc命令可以对数据中的文本进行计数。默认情况下输出文本的行数、词数、字节数。

内联输入重定向:<<
无需使用文件进行重定向,只需要在命令行中指定用于输入重定向的数据就可以了。
除了这个符号,你必须指定一个文本标记来划分输入数据的开始和结尾。任何字符串都可作为文本标记,但在数据的开始和结尾文本标记必须一致。
在这里插入图片描述
在这里插入图片描述
次提示符会持续提示,以获取更多的输入数据,直到你输入了作为文本标记的那个字符串。

管道:

在这里插入图片描述
$rpm -qa
rpm命令对系统上安装的软件包进行管理。配合-qa使用,生成已安装包的列表
rpm命令的输出重定向到了文件rpm.list。再将内容发送给sort命令,该命令按字母顺序对软件包进行排序。

我们用不着将命令输出重定向到文件中,可以将其直接重定向到另一个命令。这个过程叫作管道连接( piping)。 很少用到
在这里插入图片描述
Linux系统同时运行这两个命令,在系统内部将它们连接起来。在第一个命令产生输出的同时,输出会被立即送给第二个命令。数据传输不会用到任何中间文件或缓冲区。
$ rpm -qa | sort 代替上面的命令
$ rpm -qa | sort | more 强行将输出按屏显示。
ls -l命令产生了目录中所有文件的长列表。
$ls -l | more 通过将输出管道连接到more命令,可以强制输出在一屏数据显示后停下来。

需要使用shell的转义字符(反斜线)将其标出来。
$ expr 5 * 2
使用方括号将数字表达式围起来。
在这里插入图片描述
bash shell数学运算符只支持整数运算。

$bc 进入bc计算机。可以在命令行中输入浮点表达式,并计算后返回结果。
在这里插入图片描述
scale变量的默认值是0。在scale值被设置前, bash计算器的计算结果不包含小数位。在将其值设置成4后, bash计算器显示的结果包含四位小数。
-q命令行选项可以不显示bash计算器冗长的欢迎信息。bash计算器还支持变量,可以用print语句打印变量和数字。

在脚本中使用bc:
在这里插入图片描述
在这里插入图片描述
bc命令能识别输入重定向,使用内联输入重定向,直接在命令行中重定向数据。

退出脚本
Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码。对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用该变量。它的值会变成由shell所执行的最后一条命令的退出状态码。按照惯例,一个成功结束的命令的退出状态码是0。无效命令会返回一个退出状态码127。
在这里插入图片描述
退出状态码126表明用户没有执行命令的正确权限。 一般性的退出状态码1,表明在命令中发生了未知错误/给某个命令提供了无效参数。

小结

在变量前使用美元符来引用环境变量。
通过反引号或$()捕获的某个命令的输出。
通过大于号将命令输出从显示器屏幕重定向到一个文件中。也可以通过双大于号将输出数据追加到已有文件。小于号用来将输入重定向到命令。
Linux管道命令(断条符号)允许你将命令的输出直接重定向到另一个命令的输入。
为了执行浮点运算,你需要利用bc计算器命令,将内联数据重定向到输入,然后将输出存储到用户变量中。
shell中运行的每个命令都会产生一个退出状态码。

发布了34 篇原创文章 · 获赞 49 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_44710568/article/details/105070807