1.管道 "|"
ls | cat -n > out.txt
2. 子shell
2.1 子shell 说明
在shell脚本中可以用()操作符可以定义一个子shell
#/bin/bash pwd (cd / ; ls) pwd
执行结果
说明: 当命令在子shell中执行的时候不会对当前shell有任何影响
2.2 获取子shell 中的数据
cmd_output=$(COMMANDS)
out=$(ls -l | cat -n)
#!/bin/bash out=$(ls -l | cat -n) echo $out
输出结果:
问题所在: 行和行之间的回车键没了。这显然是我们不想要的结果
解决办法:将子shell的结果放入双引号中,保留换行符
#!/bin/bash out=$(ls -l | cat -n) echo $out out="$(ls -l | cat -n)" echo $out
执行结果:
什么鬼!!!居然没有变化。 难道书上写错啦!!
最后在网上找到了问题的答案: IFS(内部域分隔符)
IFS详情: http://www.2cto.com/os/201504/394478.html
将IFS设置成" "换行符就可以了,只是在外边加上引号的这种做法是不对的
#!/bin/bash out=$(ls -l | cat -n) echo $out IFS=" " out=$(ls -l | cat -n) echo $out
3. 反引用(与单引号可不是一回事)
out.txt=·ls | cat -n·
其它操作与子shell相同