在 bash 中用换行符连接字符串?
Concatenate strings with newline in bash?
我看过 Concatenating two string variables in bash appending newline - 但正如我所读,解决方案是:
echo it like this with double quotes:
...但我似乎无法重现它 - 这是一个示例:
$ bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
$ mystr=""
$ mystr="${mystr}First line here\n"
$ mystr="${mystr}Second line here\n"
$ mystr="${mystr}Third line here\n"
$ echo $mystr
First line here\nSecond line here\nThird line here\n
到目前为止,正如预期的那样 - 这里是双引号:
$ echo "$mystr"
First line here\nSecond line here\nThird line here\n
我再次没有得到新行 - 所以建议“像这样用双引号回显”似乎不是正确的。
谁能说准确,在bash
中连接字符串时如何获得正确的换行符输出(不仅仅是\n
)?
你应该做
nabil@LAPTOP:~$ echo -e $mystr
First line here
Second line here
Third line here
nabil@LAPTOP:~$
您可以在 man 中找到其他选项
-e enable interpretation of backslash escapes
向字符串添加一个换行符,而不是两个字符 \
和 n
。
mystr=""
mystr+="First line here"$'\n'
mystr+="Second line here"$'\n'
mystr+="Third line here"$'\n'
echo "$mystr"
或 您可以解释 \
转义序列 - 使用 sed
、echo -e
或 printf "%b" "$mystr"
.
我看过 Concatenating two string variables in bash appending newline - 但正如我所读,解决方案是:
echo it like this with double quotes:
...但我似乎无法重现它 - 这是一个示例:
$ bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
$ mystr=""
$ mystr="${mystr}First line here\n"
$ mystr="${mystr}Second line here\n"
$ mystr="${mystr}Third line here\n"
$ echo $mystr
First line here\nSecond line here\nThird line here\n
到目前为止,正如预期的那样 - 这里是双引号:
$ echo "$mystr"
First line here\nSecond line here\nThird line here\n
我再次没有得到新行 - 所以建议“像这样用双引号回显”似乎不是正确的。
谁能说准确,在bash
中连接字符串时如何获得正确的换行符输出(不仅仅是\n
)?
你应该做
nabil@LAPTOP:~$ echo -e $mystr
First line here
Second line here
Third line here
nabil@LAPTOP:~$
您可以在 man 中找到其他选项
-e enable interpretation of backslash escapes
向字符串添加一个换行符,而不是两个字符 \
和 n
。
mystr=""
mystr+="First line here"$'\n'
mystr+="Second line here"$'\n'
mystr+="Third line here"$'\n'
echo "$mystr"
或 您可以解释 \
转义序列 - 使用 sed
、echo -e
或 printf "%b" "$mystr"
.