이 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
s
sed
, 특정 구문을 사용하는 명령 :
s/AAAA/BBBB/options
는 s
대체 명령이고, AAAA
는 대체할 정규식이며, BBBB
는 대체하려는 항목이고, 는 전역( ) 또는 대소문자 무시( ) options
와 같은 대체 명령에 대한 옵션입니다 .g
i
특정 경우에는 마지막 슬래시가 누락되었습니다 /
. 슬래시를 추가하면 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 파이프라인에서 실행하거나 복사하여 붙여넣으면 여러 줄 명령이 되어 이 오류와 함께 실패합니다.
해결책은 백슬래시를 피하는 것입니다.