У меня есть файл с именем config.yaml, который содержит эту строку:
device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"
Я хочу заменить <ADD DEVICE CONNECTION STRING HERE>
на значение следующей переменной:
root@ubuntu1804-ko-001:/tmp# echo "$CSTRING"
HostName=PulseAzure-BetterTogetherDemo.azure-devices.net;DeviceId=ubuntu1804-ko-001;SharedAccessKey=xdWDu2gnzlg8X1mHgGqYU+yECBYUJ065n1AjdkYNCWI=
root@ubuntu1804-ko-001:/tmp#
Когда Я запускаю эту команду sed, я получаю неопределенную ошибку s:
sed -i "s/<ADD DEVICE CONNECTION STRING HERE>/$CSTRING/g" config.yaml
sed: -e expression #1, char 38: unterminated `s' command
Спасибо за вашу помощь!
Оказывается, что CSTRING
содержит буквальный перевод строки.
Включив отладку оболочки, мы можем видеть то, что видит sed
:
$ set -x
$ sed "s/<ADD DEVICE CONNECTION STRING HERE>/$CSTRING/g" config.yaml
+ sed 's/<ADD DEVICE CONNECTION STRING HERE>/
HostName=PulseAzure-BetterTogetherDemo.azure-devices.net;DeviceId=ubuntu1804-ko-001;SharedAccessKey=xdWDu2gnzsfsdfdsfds=/g' config.yaml
, и именно sed 's/<ADD DEVICE CONNECTION STRING HERE>/
вызывает ошибку
sed: -e expression #1, char 38: unterminated `s' command
.