Shell脚本:将命令输出保存到变量后,命令输出变为一行

时间:2013-10-07 20:05:43

标签: bash shell

我想多次处理命令的输出(用于不同的目的)。

但是,将输出保存到变量后,原来的多行输出被压缩为一个。

例如:

$ 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

从上面的例子中可以看出,输出变为一行。

这里发生了什么?如何将输出恢复为原始的多行格式?

1 个答案:

答案 0 :(得分:4)

除非用双引号包装变量,否则它的扩展会进行单词拆分,这会导致所有空格序列折叠成一个单词分隔符。所以写:

echo "$l"

除非您知道自己处于要在其上进行分词和通配符扩展的上下文中,否则通常应引用变量。