expansão da variável sed não funciona (comando `s' não terminado)

expansão da variável sed não funciona (comando `s' não terminado)

Eu tenho um arquivo chamado config.yaml que contém esta linha:

device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"

Quero substituir <ADD DEVICE CONNECTION STRING HERE>pelo valor da seguinte variável:

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#

Quando executo este comando sed, recebo o erro não finalizado:

sed -i "s/<ADD DEVICE CONNECTION STRING HERE>/$CSTRING/g" config.yaml
sed: -e expression #1, char 38: unterminated `s' command

Obrigado pela ajuda!

Responder1

Acontece que CSTRINGcontém uma nova linha literal.

Ao ativar a depuração do shell, podemos ver o que sedvê:

$ 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

e é isso sed 's/<ADD DEVICE CONNECTION STRING HERE>/que está causando o

sed: -e expression #1, char 38: unterminated `s' command

erro.

informação relacionada