2015-03-02 121 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