我正在制作一个预提交脚本。它看起来是这样的:
function presubmit() {
gradle test android
gradle test ios
gradle test server
git push origin master
}如果任何测试失败,我希望函数退出,这样它就不会将bug推到git上。多么?
发布于 2019-11-21 06:43:49
1.结合使用subshell ( .. ) 和 ;为了更简洁,您可以这样做:
build() {( set -e # Fail early
build_cmd_step_1
build_cmd_step_2
build_cmd_step_3
...
)}然后,函数将在第一次失败时失败,您可以截获退出状态:
build
exit_status=$?
if [ ${exit_status} -ne 0 ]; then
echo "We have error - build failed!"
exit "${exit_status}"
fi2.或者, && \ 内部的链接也是好的(https://stackoverflow.com/a/51913013/1375784),尽管如果你有一个更大的函数,它可能会变得不好。
这两种方法都很好,这取决于您的用例(在某些情况下,使用子subshells可能会导致一些不想要的副作用)
发布于 2018-08-19 06:30:02
我这样做的方法是在函数中的每个命令后添加&& \ (除了最后一个命令)。
function presubmit() {
gradle test android && \
gradle test ios && \
gradle test server && \
git push origin master
}发布于 2016-11-05 03:19:32
您可以这样做:
# declare a wrapper function for gradle
gradle() {
command gradle "$@" || exit 1
}
presubmit() {
gradle test android
gradle test ios
gradle test server
git push origin master
}
declare -xf presubmit gradle调用子subshell中的函数,如下所示:
( presubmit )https://stackoverflow.com/questions/40429865
复制相似问题