在 bash 编程中,给定一个变量,例如varA
,它存储包含#
符号的字符串。假设varA
包含这个值:ASD# 1
,我需要\
在 的前面附加一个反斜杠#
,所以输出可能有这个:ASD\# 1
。以下代码是为了实现我的目标,只是字符串替换似乎不起作用,并且我无法将 sed 命令的输出分配给另一个变量。有看到这个吗?
varA="ASD# 1"
echo $(sed s/\#/\\#/g <<< ${varA})
答案1
你的sed
表达中缺少引号。
尝试:
$ varA="ASD# 1"
$ echo "$(sed 's/#/\\#/g' <<< "${varA}")"
ASD\# 1
答案2
sed
仅使用一个变量会产生开销。在bash
你可以使用${varA/\#/\\\#}
.