![使用 SED 时删除引号的 Shell 脚本](https://linux22.com/image/756109/%E4%BD%BF%E7%94%A8%20SED%20%E6%97%B6%E5%88%A0%E9%99%A4%E5%BC%95%E5%8F%B7%E7%9A%84%20Shell%20%E8%84%9A%E6%9C%AC.png)
我正在尝试更改配置文件中的一行语法,该行如下所示:
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