いくつかのアクションを実行するための以下のsshコマンドを含むシェルスクリプトがあります。
$SSH $user@$remoteIpAddress "sudo rm -rf $remoteLocation/xxx/*; cd $remoteLocation/yyy; .... ... "
ディレクトリ$ remoteLocation / yyyは利用できず、次のようにエラーが表示されます。
./test.sh:6行目:cd:/ opt / test / yyy:そのようなファイルやディレクトリはありません
そしてそれは次の行に進んでいます。私のシナリオは、ssh内のいずれかのコマンドがゼロ以外の値を返した場合に、シェルスクリプト自体を終了することです。set -eを追加してシェルを終了することはできますが、sshでそれを処理する方法がわかりません。前もって感謝します。
編集:
SSHコマンドの下に数行のコマンドがあります。スクリプトを完全に終了し、sshコマンドの下の行を実行しないソリューションが必要です。
あなたのset -e
アイデアは、sshでもう一方の端を開くシェルにも同様に当てはまることに注意してください。したがって、sshコマンドの前にそれを追加して、エラーがsshセッションを終了するようにすることができます。
$SSH $user@$remoteIpAddress "set -e; sudo rm -rf $remoteLocation/xxx/*; cd $remoteLocation/yyy; .... ... "
次に、エラーが発生するとすぐにsshシェルがゼロ以外のエラーコードで終了set -e
します。スクリプトの前半にある場合は、スクリプトも終了します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加