1

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

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

例如:

$ 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

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

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

4

1 回答 1

4

除非您将变量用双引号括起来,否则它的扩展会经历分词,这会导致所有空格序列被折叠成一个分词符。所以写:

echo "$l"

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

于 2013-10-07T20:09:19.313 回答