-
用管道组合两个命令
ls | cat -n > out.txt
ls
的输出(stdout)被传递给cat -n
,后者将通过 stdin 所接收到的输入内容加上行号,然后输出重定向到文件 out.txt。 -
读取由管道相连的命令序列输出
-
子shell方式
out=$(ls | cat -n)
-
反引用方式
out=`ls | cat -n`
-
-
利用子 shell 生成一个独立进程
子shell本身就是一个独立的进程。可以利用
()
操作符来定义一个子shell:pwd (cd /bin; ls) pwd
可以看到,前后两次打印的当前路工作目录是一致的,子shell中执行cd命令没有影响到当前shell进程。
-
通过引用子 shell 的方式保留空格和换行符
可以将命令放入双引号中,以保留空格和换行符(\n)。out="$(cat text.txt)"
以上书中所说的方式没有起作用!
为什么呢?让我们先来看一看1.16 字段分隔符和迭代器
中关于 IFS 的介绍。分析
out="$(cat text.txt)"
我们单独执行
cat text.txt
命令输出正常,但赋值给out
之后值就变成一行了。我猜测应该是在赋值的时候bash对文本进行了处理——以 IFS 中的字符列表作为分隔符,将内容分割之后再用 IFS 中的第一个分隔符进行拼接,然后赋值给out
。
网友评论