使用 SED 时删除引号的 Shell 脚本

使用 SED 时删除引号的 Shell 脚本

我正在尝试更改配置文件中的一行语法,该行如下所示:

host="192.0.2.100"

我正在编写一个脚本,该脚本要求输入用户更改 IP 并保持与上述相同的格式。我写道:

#/bin/bash
echo "enter IP"
read inputIP
sed -i /host=/c\host="$inputIP" /path/file.xml

当我在文件中运行此文件时得到的结果如下:

host=192.0.2.100

所以问题是我该如何运行它而不丢失引号?

答案1

引号对于 shell 来说是特殊的,它在将参数发送到 sed 之前,会通过所谓的“引号删除”将其删除。要保留它们,请使用反斜杠对其进行转义:

sed -i /host=/c\host=\"$inputIP\" /path/file.xml

相关内容