sed 변수 확장이 작동하지 않습니다(종료되지 않은 `s' 명령)

sed 변수 확장이 작동하지 않습니다(종료되지 않은 `s' 명령)

다음 줄이 포함된 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

오류.

관련 정보