Назад | Перейти на главную страницу

Shell-скрипт для удаления кавычек при использовании SED

Я пытаюсь изменить строку синтаксиса в файле конфигурации, где строка выглядит следующим образом:

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

Итак, вопрос в том, как мне запустить это и не потерять кавычки?

Кавычки являются специальными для оболочки, она удаляет их в так называемом «удалении кавычек» перед отправкой параметров в sed. Чтобы сохранить их, экранируйте их с помощью обратной косой черты:

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