sed가 "char 53: unterminating `s' command"를 출력하는 이유는 무엇입니까?

sed가 "char 53: unterminating `s' command"를 출력하는 이유는 무엇입니까?

이 bash 스크립트가 필요한 이유

ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF

출력->

sed: -e expression #1, char 53: unterminated `s' command

답변1

ssed, 특정 구문을 사용하는 명령 :

s/AAAA/BBBB/options

s대체 명령이고, AAAA는 대체할 정규식이며, BBBB는 대체하려는 항목이고, 는 전역( ) 또는 대소문자 무시( ) options와 같은 대체 명령에 대한 옵션입니다 .gi

특정 경우에는 마지막 슬래시가 누락되었습니다 /. 슬래시를 추가하면 sed제대로 작동합니다.

➜  ~  sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME

info sed 'The "s" Command's 명령에 대한 완전한 설명과 사용법이 포함되어 있습니다.

답변2

/마침내 사라졌습니다.

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE

답변3

제 경우에는(특이한 문제) sed 명령에 \n이 있었습니다. Jenkins 파이프라인에서 실행하거나 복사하여 붙여넣으면 여러 줄 명령이 되어 이 오류와 함께 실패합니다.

해결책은 백슬래시를 피하는 것입니다.

관련 정보