我的bash脚本,我有一个带有$
标志的字符串变量,并且它没有被转义。它看起来像这样:
x="hello $world"
显然,当我echo "$x"
时,输出是hello
,因为$world
被解释为变量。我的目标是将字符串修改为hello \$world
。我尝试了几种技术,如下所示。他们似乎都没有工作:
y="$(echo "$x" | sed 's/\$/z/g')"
(输出hello
)
y="$(echo "$x" | sed 's/$/z/g')"
(输出hello z
,即使我没有在sed中逃脱\
)
甚至通过以下方式尝试了Bash的原生字符串替换:
y=${x//\$/z}
(输出hello
)
我意识到如果字符串没有存储在变量中,我可以轻松地做任何这些,但是我的脚本工作的方式,这个字符串将首先存储在变量中,所以我需要弄清楚如何添加\
之后那。我不在乎我是否创建了字符串的新副本或编辑相同的字符串。
赋值($world
为空或未定义)与写入相同
x="hello "
你对$x
所做的一切都不会在那里看到$
,除非你从外面添加它。
也许你的意思是:
x='hello $world'
你可以使用BASH
:
x='hello $world'
echo "${x//\$/\\$}"
hello \$world