私はたくさんのコード行を持つbashスクリプトを持っており、$を返す間に実行する必要がありますか? == 0、しかし、それがエラーを持っている場合は、それを停止し、コード1で終了する必要がありますか?コード0を返している間にbashスクリプトを実行するには?
質問はどのように行うのですか?
私はset -e
コマンドを使用しようとしましたが、失敗したとして、ジェンキンスは、マークが
は私も
Iを記録し、私のジェンキンスでそれを示すために、エラーメッセージを取得する必要があり、それが成功のように見える彼のために、ビルドされません。エラーコードを取得することができました(私の場合は126となります)が、エラーメッセージを受け取る方法は?
#!/bin/sh
while fileWithError.sh; do
sleep 1;
done
echo fileWithError.sh failed!! >&2
注:
main file
fileWithError.sh
rc=$?; if [[ $rc != 0 ]]; then
echo "exit {$rc} ";
fi
fileWithError.sh
#!/bin/sh
set -e
echo "Test"
agjfsjgfshgd
echo "Test2"
echo "Test3"
あなたの質問は不明です。スクリプト自体が多くのコード行であるか、それとも「長い」時間実行されているので、「長い」のですか?コマンドが失敗した場合はゼロ以外のステータスで終了しますか、それとも連続ループで実行したいのですか?スクリプトの呼び出しに失敗した場合にのみ中断しますか? 「それに間違いがあります」とはどういう意味ですか?予期しない入力に遭遇したことを意味しますか?または、それが呼び出すコマンドの1つがゼロ以外のステータスで終了することはありますか?それとも、予想される範囲外の出力を生成するのでしょうか?質問を明確にする。 –
私は質問 – nightmare
を更新しましたあなたはまだ多くの明確な質問に答えていません。 'set -e'はエラーで失敗するはずなので、スクリプトを呼び出すコードが間違っているように聞こえます。 – tripleee