echo 在两个字符串之间添加一个换行符

echo add a newline between two strings

我终于在 bash 中的两个字符串之间回显了一个新行。
加上回显包含 \n 的字符串。 作为

m=$'line1\nline2'  
n=line3  
echo "$m" ""$'\n'"" $n  

给我

line1  
line2  
 line3  

(我在 $n 之前留下了 space 以使其更清楚。)
有更好的方法吗?

只需使用 printf 即可完全控制何时有新行:

printf "%s\n%s" "$var1" "$var2"
#---------^^

例如:

$ s1="hello how are you"
$ s2="I am fine thanks" 
$ printf "%s\n%s\n" "$s1" "$s2"
hello how are you
I am fine thanks

根据您的 shell,echo 带有一个 -e 标志,用于打印转义字符。

echo -e "Hello\nWorld"

或者,您可以使用 printf,但它不提供自己的尾随换行符,您需要确保占位符不会出现在您的文本中:

printf "Hello\nWorld\n"