bash - 如何替换变量中的换行符?

Ste*_*han 2 linux string bash replace

这是我的脚本:

my_var="foo
bar
baz"

echo ${my_var//\n/\\n}
Run Code Online (Sandbox Code Playgroud)

我想用替换所有换行符\\n.

然而,这就是我所拥有的:

foo bar baz
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Tom*_*ech 7

我认为这样做你想要的:

$ echo "${my_var//$'\n'/\\n}"
foo\nbar\nbaz
Run Code Online (Sandbox Code Playgroud)

有两件重要的事情需要注意:

  1. 引用你的变量!你的扩展没有进行任何替换,但变量中的空格由于分词而被压扁.echo打印由单个空格分隔的每个参数.
  2. 使用$'\n'了C风格的字符串,在得到一个换行符搜索扩展的一部分.