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'■ コマンドの完全な説明と使用法が含まれています。

答え2

/ついに消えた。

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

答え3

私の場合は(珍しい問題)sedコマンドに\ nがありました。 Jenkinsパイプラインで実行またはコピーして貼り付けると、複数行のコマンドになり、このエラーで失敗します。

解決策はバックスラッシュを避けることです。

関連情報