我想多次处理命令的输出(用于不同的目的)。
但是,将输出保存到变量后,原来的多行输出被压缩为一个。
例如:
$ l=`ll`
$ echo $l
total 1408 -rwxrwxr-x. 1 xiaohan xiaohan 229 Oct 7 22:50 run.sh -rwxrwxr-x. 1 xiaohan xiaohan 229 Oct 7 22:56 test.sh -rwxrwxr-x. 1 xiaohan xiaohan 1326459 Oct 2 17:29 TMalign -rw-r--r--. 1 xiaohan xiaohan 104175 Oct 2 17:29 TMalign.f
从上面的例子中可以看出,输出变为一行。
这里发生了什么?如何将输出恢复为原始的多行格式?
答案 0 :(得分:4)
除非用双引号包装变量,否则它的扩展会进行单词拆分,这会导致所有空格序列折叠成一个单词分隔符。所以写:
echo "$l"
除非您知道自己处于要在其上进行分词和通配符扩展的上下文中,否则通常应引用变量。