2012-08-28 37 views
2
$ cat temp.txt 
hello, world! 





$ cat temp.txt | sed -n '1,4p' 
hello, world! 



$ ret=$(cat temp.txt | sed -n '1,4p') 
$ echo "$ret" 
hello, world! 
$ 

我想知道爲什麼$ ret變量沒有空行。

非常感謝您的幫助。

+3

「$() - 剝離換行符」。 http://stackoverflow.com/a/5322980/399077 – Nate

回答

4

從bash幫助頁面(重點煤礦):

擊執行通過執行命令,並用任何尾隨的換行符 刪除替換與命令替換>命令的標準輸出,膨脹。嵌入的換行符不會被刪除,但可能在拆分單詞 期間被刪除。命令替換$(cat file)可以用相當於 的$(<文件)代替。

-1

echo "$ret"的解析跳過空白在確定echo實際參數將是什麼。玩弄這樣的事情來更好地理解:

x=$(echo ' foo ') 
echo "x${x}x" 
echo ${x} 
echo "${x}" 
+0

他引用'$ ret',但。問題是,爲什麼'$ ret'中沒有空行? – chepner

相關問題