bash 在使用 tr 并分配给变量时用空格替换新行

wul*_*jey 5 bash

我想用新行替换逗号并将其分配给变量。在这种情况下 tr 的结果完成了这项工作:

$echo "a,b" | tr ',' '\n'
a
b
Run Code Online (Sandbox Code Playgroud)

但是,使用相同的命令并将其分配给变量会将新行更改为空格:

$ x=$(echo "a,b" | tr ',' '\n')
$ echo $x
a b
Run Code Online (Sandbox Code Playgroud)

如何使其工作,以便在最终结果中存在未转换为空格的新行?

sjs*_*sam 5

您应该将变量放在双引号内作为参数,echo并且可以使用-eecho 选项来启用转义序列的解释(许多情况下的默认行为)。

x=$(echo "a,b" | tr ',' '\n')
echo -e "$x"
Run Code Online (Sandbox Code Playgroud)

但是你有更优雅的方法来做同样的事情,考虑如下参数扩展:

var="a,b"
echo -e "${var/,/\\n}"
Run Code Online (Sandbox Code Playgroud)