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 CSTRING
contém uma nova linha literal.
Ao ativar a depuração do shell, podemos ver o que sed
vê:
$ 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.