求大佬解答, shell 函数中执行一条语句失败后, 立马退出函数, 怎么实现.

2020-05-12 15:40:30 +08:00
 xiangyuhahah
#!/bin/bash
set -e
set -u
set -x

Hello () {
kill -9 i # 这里我想让 Hello 这个函数执行立马退出, 然后外面判断退出的数字, 来进行下一步操作
echo "到这里应该执行失败"
}

Hello && A=$? || A=$?
echo "$A"
echo "执行到这里了"

trap " echo '错误发生了, 我来收尾' " INT TERM EXIT
kill -9 i

echo "这里不再执行"
1778 次点击
所在节点    程序员
7 条回复
xiangyuhahah
2020-05-12 15:42:21 +08:00
网上都是针对整个 shell 脚本的, 比如 set -e. 我想针对一个函数, 一遇到错误就立马退出函数. 求大佬解答.
我想过一条一条捕捉执行, 但是效率太差.
LGA1150
2020-05-12 15:48:12 +08:00
kill -9 i || return $?
xiangyuhahah
2020-05-12 15:49:04 +08:00
@LGA1150 我要写的函数内容非常多, 一句一句这样捕捉效率太差. 有效率高些的吗
aheadlead
2020-05-12 16:00:52 +08:00
你可以在函数的开头 set -e
结束的地方 set +e
LGA1150
2020-05-12 16:01:40 +08:00
@xiangyuhahah 用 bash -e 新开一个进程执行你的函数
codehz
2020-05-12 16:15:25 +08:00
(用圆括号,然后这样会开新进程跑
xiangyuhahah
2020-05-12 16:19:55 +08:00
@LGA1150 解决了, 感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/670950

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX