从bash子shell截断尾随的换行符
Bash似乎从子shell的输出中删除了尾随的换行符。例如:从bash子shell截断尾随的换行符,bash,Bash,Bash似乎从子shell的输出中删除了尾随的换行符。例如: $ echo "Newline: '$(echo $'\n')'" 将产生产出 Newline: '' Newline: ' ' 有人知道一种解决方法或防止这种截断发生的方法吗?经过更多的实验,我发现了一种使用shell变量的解决方法。基本上,我会确保输出不会以换行结束,然后在以后去掉添加的文本 output="$(echo $'\n'x )" output="${output%x}" echo "Newline: '$outp
$ echo "Newline: '$(echo $'\n')'"
将产生产出
Newline: ''
Newline: '
'
有人知道一种解决方法或防止这种截断发生的方法吗?经过更多的实验,我发现了一种使用shell变量的解决方法。基本上,我会确保输出不会以换行结束,然后在以后去掉添加的文本
output="$(echo $'\n'x )"
output="${output%x}"
echo "Newline: '$output'"
这将提供适当的输出
Newline: '
'
您可以使用
-e
选项启用反斜杠转义的解释,并使用一个echo
完成所有操作
$ echo -e "Newline: '\n'"
将产生产出
Newline: ''
Newline: '
'
如果您只需要变量中的换行符:
nl=$'\n'
如果您需要保留换行符,您可以这样做(您在自己的答案中显示):
导致:
'hello
'
谢谢Andrew,但我只是以内部的
echo$'\n'
为例。我的实际子shell要复杂得多。