Ich habe eine Datei namens config.yaml, die diese Zeile enthält:
device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"
Ich möchte
<ADD DEVICE CONNECTION STRING HERE>
durch den Wert der folgenden Variablen ersetzen:
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#
Wenn ich diesen Sed-Befehl ausführe, erhalte ich den Fehler „nicht beendetes s“:
sed -i "s/<ADD DEVICE CONNECTION STRING HERE>/$CSTRING/g" config.yaml
sed: -e expression #1, char 38: unterminated `s' command
Ich danke Ihnen für Ihre Hilfe!
Antwort1
Es stellt sich heraus, dass es CSTRING
einen wörtlichen Zeilenumbruch enthält.
Durch Aktivieren des Shell-Debuggings können wir sehen, was sed
sieht:
$ 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
und das ist es, sed 's/<ADD DEVICE CONNECTION STRING HERE>/
was die
sed: -e expression #1, char 38: unterminated `s' command
Fehler.