シェルスクリプトにssh heredocがあります。もしheredocのコマンドの1つがエラーになっていたら、シェルスクリプトを終了するにはどうしたらいいですか?heredocコマンドが失敗した場合のスクリプトの終了方法
私のシェルスクリプトは、ここでこの
#!/bin/bash
set -o errexit
loginto_vm() {
ssh [email protected] << ENDSSH
ls n1n
cd n1n
ENDSSH
echo 'done'
}
loginto_vm
のように、それは「N1N」が存在しない場合のsshヒアドキュメントを終了し、echo文を印刷し、私はそれがスクリプト
!/ binに/ bashの セット-o ERREXIT loginto_vm(){IP @ SSHホスト<< ENDSSH LS N1NのCD N1NのENDSSHエコー[完了 '} loginto_vm – anil
CDは、非ゼロを返す必要がありますsshはゼロ以外の値を返さなければならず、 'set -o errexit'のセマンティクスがスクリプトを中止させることを期待するでしょう。しかし、 'set -o errexit'は多くの古いシェルで予期せぬ動作をすることが知られており、現代シェルでは間違いなくエッジケースがあります。本当に避けなければなりません。 'ssh host @ IP << ENDSSHを実行するだけです。出口 ' –