Bash似乎從子殼的輸出中刪除尾隨的換行符。例如:尾隨的換行符從bash子殼中被截斷
$ echo "Newline: '$(echo $'\n')'"
時會產生輸出
Newline: ''
有誰知道解決方法或一種方法來防止這種截斷的發生?
Bash似乎從子殼的輸出中刪除尾隨的換行符。例如:尾隨的換行符從bash子殼中被截斷
$ echo "Newline: '$(echo $'\n')'"
時會產生輸出
Newline: ''
有誰知道解決方法或一種方法來防止這種截斷的發生?
如果你需要的僅僅是一個變量換行符:
nl=$'\n'
如果您需要保留換行符,你可以這樣做(您在自己的答案中顯示):
f() { echo "hello"; }
output=$(f; echo "x")
output=${output%x}
echo "'$output'"
產生於:
'hello
'
經過一些更多的實驗後,我找到了一個使用shell變量的解決方法。基本上,我確保輸出不末的換行符,然後我脫光添加文本後
output="$(echo $'\n'x)"
output="${output%x}"
echo "Newline: '$output'"
這給正確的輸出
Newline: '
'
可以使用-e
選項以啓用對反斜槓轉義的解釋,並使用一個echo
完成所有操作。
$ echo -e "Newline: '\n'"
時會產生輸出
Newline: '
'
謝謝安德魯,但我只是使用內部'echo $'\ n''作爲例子。我的實際子殼顯得更復雜。 – Quantum7 2010-12-20 01:47:21