1. 输出重定向
最基本的重定向是将命令的输出发送到一个文件中. 在 bash shell 中用大于号(>) , 格式如下: command> inputfile. 例如: 将 date 命令的输出内容, 保存到指定的输出文件中.
如果文件已存在, 重定向操作符会用新的文件数据覆盖已有文件. 这种情况下可以用双大于号(>>) 来追加数据. 如下图所示:
2. 输入重定向
输入重定向和输出重定向正好相反. 输入重定向是将文件的内容重定向到命令, 而非将命令的输出重定向到文件. 输入重定向符号是小于号(<), 格式如下: Command <inputfile. 下面是 test1 文件和 wc 命令一起使用输入重定向的例子. wc 命令可以对文件内容进行计数包括文本的行数, 文本的词数, 文本的字节数.
另外一种输入重定向的方法, 称内联输入重定向(符号是 <<). 这种方法无需使用文件进行重定向, 只需要在命令行中指定用于输入重定向的数据就可以了. 计数包括文本的行数, 文本的词数, 文本的字节数.
3. 管道
管道符号是单个竖线( | ) , 管道被放在命令之间, 将一个命令的输出重定向到另一个命令中. 格式: command1 | command2 .Linux 系统会同时运行这两个命令, 在系统内部将它们连接起来. 在第一个文件产生输出的同时, 输出会被立即送给第二个命令, 数据不会用到任何中间文件或缓冲区. 例如查找 yum 安装的所有包, 并使用管道立即送给第二个命令 grep 来过滤查询字符中含有 MySQL 的.
下面是使用了二个管道, 排序, 分页查看. 并将结合重定向来将输出保存到 yum.list 文件中, 下图是通过 cat yum.list 来查看文件内容.
- [hsr@xuegod64 ~]$ yum list | sort | more
- [hsr@xuegod64 ~]$ yum list | sort> yum.list
4. 数学运算命令
在 Bourne shell 中使用 expr 命令来进行数字运算. 在 bash shell 中也兼容, 但它提供了更简单的方法来执行数学表达式, 在 bash 中, 将一个数学变量结果赋给某个变量时, 可以用美元符和方括号( $[operation] ) 将数学表达式围起来(注意运算只支持整数).
同样也适合于 shell 脚本中.
5. 浮点解决方案
有几种方法克服 bash 中数学运算的整数限制, 最常见的方案是用内建的 bash 计算器叫作 bc.
5.1 bc 的基本用法
bash 计算器实际上是一种编程语言, 它允许在命令行输入浮点表达式, 然后解释并计算该表达式, 返回结果. Bash 计算器能够识别: 数字, 变量, 注释, 表达式, 编程语句(if -then).
用法是在命令行输入 bc, 接着输入要进行运算的数字表达式, 按回车出结果, 如下图所示:
对于保留小数位, 使用 scale 指定要保留的小数位, 下面先指定保留 4 位小数.
下面使用 bc -q 选项不显示 bash 计算器的欢迎信息. 使用变量来看看, 如下图:
5.2 在脚本中使用 bc
使用之前学过的命令替换, 可以用命令替换运行 bc 命令, 并将输出赋给一个变量. 格式如下: variable=$(echo "options; expression" | bc) options 是允许你设置变量, 如果不止一个, 用分号分开. expression 定义了通过 bc 执行的数学表达式.
下面是将 scale 变量设置成四位小数, 并在 expression 部份指定了特定的运算.
下面是在脚本中使用变量来运算浮点数
下面另一种方法是通过内联重定向, 格式是 :
- variable=$(bc << EOF
- Options
- Statements
- Expressions
- EOF)
6. 退出脚本
6.1 查看退出状态码
shell 中运行的每个命令都有退出状态码 (exit status) 告诉 shell 它已经运行完毕. 退出状态码是一个 0~255 的整数值. 在命令结束时由命令传给 shell, 可以捕获这个值并在脚本中使用.
Linux 提供了一个专门的变量 $? 来保存上个已执行命令退出状态码. 这个类似于一种开发中用断点诊断方式. 如果命令成功结束退出状态码是 0, 如果命令有错误, 退出状态就是一个正整数. 如下图所示:
下面是 Linux 退出状态码列表
状态码 | 描述 |
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的 shell 命令 |
126 | 命令不可执行 |
127 | 没有找到命令 |
130 | 通过 ctrl + c 终止的命令 |
255 | 正常范围之外的退出状态码 |
需要注意的是退出状态码 126 出现, 有可能是用户没有执行命令的正确权限. 另一个退出状态码 1 的出现, 有可能是命令的参数不对.
6.2 exit
默认情况下, shell 脚本会以脚本中最后一个命令的退出状态码退出. 使用 exit 命令可以改变这种默认行为, 返回自己的的退出状态码, exit 命令允许脚本结束时指定一个退出状态码, 但最大状态码只能是 255.
下面在脚本最后自定义退出状态码 10, 执行脚本后, 使用 echo $? 输出了状态码 10 .
来源: https://www.cnblogs.com/MrHSR/p/9756950.html