#!/bin/sh
date;
perl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pl
date;
該腳本不存在,它應該失敗。爲什麼詹金斯認爲這個構建步驟通過了?
#!/bin/sh
date;
perl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pl
date;
該腳本不存在,它應該失敗。爲什麼詹金斯認爲這個構建步驟通過了?
如果您設置一個shell認領你能提供-e
參數,使上內命令失敗腳本突破:
#!/bin/sh -e
date;
perl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pl
date;
腳本的退出狀態(0表示成功,其他一切都失敗)是最後一個命令的退出狀態。爲了解決這個問題,在做其他事情之前將正確的退出狀態存儲在shell變量中例如:
#!/bin/sh
date
perl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pl
perlexitstatus=$?
date
exit $perlexitstatus
爲了完整起見,其他兩種方式:
#!/bin/sh
set -e # exit on non-zero command exitcode
date
perl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pl
date
以上是經常有點不方便,因爲經常shell腳本有你不在乎的命令,也不要希望腳本失敗。
#!/bin/sh
set -e # exit on non-zero command exitcode
date
perl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pl ||
{ echo "aaaa... Script failed, spam [email protected]"; exit 1;}
date
最後一個可以用編寫的if-then-Fi無線聲明過,如果首選。它提供了一種打印自定義錯誤消息的方法,以防失敗命令的消息不清楚。
這是真的很酷。謝謝 –
@DavidMichaelGang請注意,它將退出* any *非零退出代碼的腳本。通常它是好的和可取的,但有時它會咬你...... – hyde