![](/img/trans.png)
[英]How do I trim whitespace, but not newlines, from subshell output in bash?
[英]Trailing newlines get truncated from bash subshell
Bash似乎從子shell的輸出中刪除了結尾的換行符。 例如:
$ 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: '
'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.