Расширение переменной sed не работает (неопределенная команда `s ')

У меня есть файл с именем 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

Спасибо за вашу помощь!

0
задан 18 May 2019 в 02:23

1 ответ

Оказывается, что 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

.

0
ответ дан 18 May 2019 в 02:23

Другие вопросы по тегам:

Похожие вопросы: