2013-10-07 130 views
1

我想多次(为了不同的目的)处理命令的输出。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 

正如可以从上面的例子中看到的,输出变为一条线。

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

+3

你试过'echo“$ l”'? – nosid

回答

4

除非用双引号包装变量,否则它的扩展将经历单词分割,这会导致将所有空白序列折叠为单个分词符。所以写:

echo "$l" 

通常你应该引用您的变量,除非你知道你在哪里,你要分词和它发生通配符扩展上下文是。

相关问题