Заменить содержимое в файле, используя bash
Я ищу заменить строку export KEY_COUNTRY="US" данными, считанными в переменную $COUNTRY в файле /etc/openvpn/easy-rsa/vars
В моих предыдущих сборках, которые я использовал с CentOS6, я использовал команду replace, которая связана с mysql-сервером. Но теперь эта функция больше не доступна, я ищу идеи альтернативной команды для замены данных.
Заранее спасибо.
1 ответ
Решение
Ты можешь использовать sed
, но имейте в виду, что он может потерпеть неудачу, если $COUNTRY противоречит управляющим символам.
sed -i 's/KEY_COUNTRY="US"/KEY_COUNTRY="'"$COUNTRY"'"/' file
Использовать Perl было бы безопаснее, поскольку он не интерпретирует содержимое переменных как часть синтаксиса:
perl -i -pe 's/KEY_COUNTRY="US"/KEY_COUNTRY="$ENV{COUNTRY}"/' -- file
$COUNTRY должен быть доступен в процессе perl, т.е. вам нужно export
это или назначить ему
COUNTRY=$COUNTRY perl ...