如何为 sed 命令添加变量中的所有特殊字符

How to add all special characters in variable for sed command

我有一个名为 varname 的变量,它包含 /, 等字符。等等。要求是将它与 sed 命令一起使用。这就是我所做的。

echo Hello admin, please add , after you enter the image name
read -p varname
sed -i "s/my-images=/&$varname/" /home/myconfig
echo Image $varname has been added to the configuration. Thanks!!

/home/myconfig 有

id=1
max-mb=1000
my-images=customimage

所需的输出是

id=1
max-mb=1000
my-images=mynewtext/version1,customimage

我在 运行 此代码时遇到错误,错误是:sed: -e 表达式 #1,字符 28: `s' 的未知选项

如有任何帮助,我们将不胜感激。

如果您输入的文本带有斜杠(我可以看到您有 mynewtext/version...),它将被识别为 finish s 命令。 您可以尝试在 sed 中使用另一个字符作为分隔符,例如:

sed -i "s#my-images=#&$varname#" /home/myconfig

您可以使用反斜杠 \ 转义变量中的所有 /(文字 \ 必须转义为 \):

sed -i "s/my-images=/&${varname//\//\/}/" /home/myconfig