首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果出现错误,如何退出bash函数?

如果出现错误,如何退出bash函数?
EN

Stack Overflow用户
提问于 2016-11-05 02:48:39
回答 4查看 17.6K关注 0票数 37

我正在制作一个预提交脚本。它看起来是这样的:

代码语言:javascript
运行
复制
function presubmit() {
  gradle test android
  gradle test ios
  gradle test server
  git push origin master
}

如果任何测试失败,我希望函数退出,这样它就不会将bug推到git上。多么?

EN

回答 4

Stack Overflow用户

发布于 2018-08-19 06:30:02

我这样做的方法是在函数中的每个命令后添加&& \ (除了最后一个命令)。

代码语言:javascript
运行
复制
function presubmit() {
    gradle test android && \
    gradle test ios && \
    gradle test server && \
    git push origin master
}
票数 18
EN

Stack Overflow用户

发布于 2016-11-05 03:19:32

您可以这样做:

代码语言:javascript
运行
复制
# 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中的函数,如下所示:

代码语言:javascript
运行
复制
( presubmit )
票数 4
EN

Stack Overflow用户

发布于 2017-10-06 10:44:18

我会让脚本更细粒度:

代码语言:javascript
运行
复制
#!/bin/bash

function test() {
  gradle test android
  gradle test ios
  gradle test server
}
function push() {
  git push origin master
}
# this subshell runs similar to try/catch
(
  # this flag will make to exit from current subshell on any error inside test or push
  set -e
  test
  push
)
# you catch errors with this if
if [ $? -ne 0 ]; then
  echo "We have error"
  exit $?
fi

我们只在测试和推送中跟踪错误。您可以在测试和推送运行的subshell之外添加更多操作。您还可以通过这种方式为错误添加不同的作用域(让我们将其视为try/catch)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40429865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档