自定义命令失败时,Go中的生成失败



我正在使用Go的自定义命令来执行shell脚本。问题是,如果脚本由于任何原因失败,构建仍然成功。如果我的shell脚本出现问题,我如何使构建失败?

排列脚本中的逻辑,以便在脚本失败时退出,并返回一个>=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
}

对于每个shell cmd,您可以看到带有…的退出代码。。。

 echo $?

最简单的方法是在脚本顶部添加set -e或将shebang更改为#!/bin/bash -e。在任何[0]命令失败后,-e将导致bash立即退出(并出现错误)。顺便说一句,我建议添加-u来捕获未定义变量的使用。

[0]它比这稍微复杂一点——实际上只有当一个命令失败时,如果该命令的结果没有在脚本中测试,它才会退出。有关详细信息,请参阅bash手册页,这些详细信息可能因您的特定平台而异。

另见:";如果任何命令返回非零值,是否中止shell脚本"在https://stackoverflow.com/a/4346420/11638666

相关内容

  • 没有找到相关文章

最新更新