shell脚本可以将多个命令或者工具组合起来生成输出,一个命令的输出可以作为另一个命令的输入,依次类似,命令组合的输出会被存储在一个变量中

输入一般通过stdin或者参数传递给命令,输出会以stdout或者stderr的方式,当多个命令并存的时候,会一边输入一边输出

连接这些命令的方式,需要一个Linux的过滤器, | 称之为 管道,pipe,连接了每一个过滤器,管道操作符是 |

cmd1 | cmd2 | cmd3

这样,cmd1的输出会传递给cmd2,cmd2的输出传递给cmd3,最后显示出来

下面的语句就是先进行获取输出,将其转为输出,然后传给cat -n加上行号,然后输出定向给out.txt

ls | cat -n > out.txt

甚至可以以子shell的方式去获取到数据

cmd_output=$(ls|cat -n)

echo $cmd_output

然后可以将$()换为反引号

cmd_output=`COMMANDS`

还有一件事,子shell是一个单独的进程,定义起来可以通过()操作符

当命令在子shell中执行的时候,不会对当前的shell有任何的影响,所有的改变都只限制在子shell之中,例如,当使用cd命令改变子shell当前目录时候,不会反映到主shell的环境之中

pwd;

(cd /bin ll)

pwd;

如果在一个子shell之中,将命令的输出读入一个变量之中,可以将其放入双引号之中,不然其中的空格和换行符将会被忽略哦

a=$(cat text.txt)

echo $a

会丢失换行符

a=”$(cat text.txt)”

echo $a

发表评论

邮箱地址不会被公开。 必填项已用*标注