2013-10-07 128 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" 

通常你應該引用您的變量,除非你知道你在哪裏,你要分詞和它發生通配符擴展上下文是。

相關問題