Как использовать переменную в команде sed для замены значения свойства в файле свойств
Я могу использовать приведенную ниже команду, чтобы изменить значение цели с помощью жесткого кодирования.
sed -ie s/^target=.*/target=google.com/ url.properties
Но если я использовал переменную, я получаю ошибку. Я не знаю, как работает команда sed. Мне нужно было только установить систему сборки.
url = google.com
sed -ie s/^target=.*/target=$url/ url.properties
ошибка sed: -e выражение #1, символ 25: неопределенная команда `s'
2 ответа
Решение
Проблема может происходить, потому что ваш URL
может содержать /
который bash интерпретирует как синтаксис sed, так что-то вроде https/www.google.com
заканчивается что-то вроде:
sed -ie 's/^target=.*/target=https/www.google.com/' url.properties
Я предлагаю разделить любые специальные символы, чтобы избежать sed
быть в замешательстве:
url=google.com
url=`echo $url | sed -e "s/\//\\\\\\\\\//g"` # delimits backslash in URL's
sed -ie "s/^target=.*/target=$url/" url.properties
Две проблемы:
- Вы не можете иметь пробелы в назначениях переменных в bash
- Вы должны процитировать
sed
команда (и в идеале URL тоже)
Рабочий пример:
url="google.com"
sed -ie "s/^target=.*/target=$url/" url.properties