Tengo un archivo llamado config.yaml que contiene esta línea:
device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"
Quiero reemplazar
<ADD DEVICE CONNECTION STRING HERE>
con el valor de la siguiente variable:
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#
Cuando ejecuto este comando sed, aparece el error s no terminado:
sed -i "s/<ADD DEVICE CONNECTION STRING HERE>/$CSTRING/g" config.yaml
sed: -e expression #1, char 38: unterminated `s' command
¡Gracias por su ayuda!
Respuesta1
Resulta que CSTRING
contiene una nueva línea literal.
Al habilitar la depuración de shell podemos ver lo que sed
ve:
$ 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
y es el sed 's/<ADD DEVICE CONNECTION STRING HERE>/
que está causando el
sed: -e expression #1, char 38: unterminated `s' command
error.