我有一個名為 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
感謝您的幫忙!
答案1
事實證明,它CSTRING
包含一個字面換行符。
透過啟用 shell 調試,我們可以看到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
錯誤。