2015-03-02 106 views
2

我正在使用Go的自定義命令來執行一個shell腳本。問題是,如果腳本因任何原因失敗,構建仍然成功。如果我的shell腳本中出現錯誤,如何使構建失敗?自定義命令失敗時在Go中失敗構建

+0

我的答案是否適合您? – jeremyjjbrown 2015-03-10 02:09:50

回答

3

安排在腳本中的邏輯,這樣如果腳本失敗,它退出的exit code> = 1

#!/bin/bash 
N=0 
#do your logic here and increment N for each failure. 
ls /non/existent/dir || { 
    echo "can't ls /non/existent/dir" 
    N=$((N+1)) 
} 
#do something else 
echo "we had $N errors" 
exit N 

相反,如果你想快速失敗

#!/bin/bash 
ls /non/existent/dir || { 
    echo "can't ls /non/existent/dir" 
    exit 1 
} 

對於每個外殼CMD你可以看到退出代碼...

echo $? 
+0

不錯的解決方案,但是......我現在有這個問題,即使我有一個只有shebang和'exit 1'的空腳本,它仍然會成功......讓這臺PC上的代理髮生火災CYGWIN中的腳本像預期的那樣,但是這可能是因爲這個繞行的地方吞下了退出代碼嗎? – helmesjo 2017-05-21 12:06:06