如何在Bash中优雅地存储和输出多行内容?

29

我试图将一段文本以保留换行符的方式捕获到一个变量中,然后输出它。

然而,当我捕获或显示文本时,换行符似乎没有被保留。

有任何想法能帮助我实现这个需求吗?

示例:

#!/bin/bash

read -d '' my_var <<"BLOCK"
this
is
a
test
BLOCK

echo $my_var

输出:

this is a test

期望输出:

this

is

a

test

1个回答

60

你需要在变量周围添加"引号。

echo "$my_var"

1
如果有相关文档,仍然希望能看到。无论如何,感谢您的回答。 - Sam Stoelinga
4
从 'info echo' 中,@SamStoelinga所说的是:echo命令会将每个给定的字符串输出到标准输出中,并在每个字符串之间加上一个空格,在最后一个字符串后加上一个换行符。如果没有使用引号,echo会将输入中的每一行解释为独立的字符串,并将它们用空格分隔后输出。而使用引号时,echo会将输入作为一个字符串输出(其中包含多行内容)。 - Roman Kogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接