다음 줄이 포함된 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
.
쉘 디버깅을 활성화하면 다음 내용을 볼 수 있습니다 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
오류.