我正在尝试更改配置文件中的一行语法,该行如下所示:
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