相关疑难解决方法(0)

基于进程退出代码退出Shell脚本

我有一个执行许多命令的shell脚本.如果任何命令以非零退出代码退出,如何使shell脚本退出?

bash shell

372
推荐指数
8
解决办法
41万
查看次数

如何在Bash脚本中捕获退出代码

我的bash代码中有很多退出点.我需要在退出时做一些清理工作,所以我使用trap为这样的退出添加一个回调:

trap "mycleanup" EXIT
Run Code Online (Sandbox Code Playgroud)

问题是有不同的退出代码,我需要做相应的清理工作.我可以在mycleanup中获得退出代码吗?

bash signals exit-code bash-trap

42
推荐指数
4
解决办法
4万
查看次数

在bash中使用退出代码

我有一个bash脚本,对我的源代码运行三次检查,然后exit 0如果所有命令都成功,或者其中exit 1任何一个命令失败:

#!/bin/bash

test1 ./src/ --test-1=option
exit_1=$?

test2 ./src/ test-2-options
exit_2=$?

test3 ./src/ -t 3 -o options
exit_3=$?

# Exit with error if any of the above failed
[[ $exit_1 -eq 0 && $exit_2 -eq 0 && $exit_3 -eq 0 ]]
exit $?
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但感觉过长且冗长.有什么方法可以做得更好吗?具体来说,我不满意:

  • 必须运行该命令,然后将退出代码分配给变量
  • 必须使用[[ ... ]],然后在下一行收集退出代码以退出
  • 必须明确地将变量比较为0 [[ $var -eq 0 ]],而不是将它们视为布尔值

理想情况下,最终结果将更具可读性:

exit_1=( test1 ./src/ --test-1=option )
exit_2=( test2 ./src/ test-2-options )
exit_3=( test3 ./src/ …
Run Code Online (Sandbox Code Playgroud)

bash

12
推荐指数
2
解决办法
3945
查看次数

标签 统计

bash ×3

bash-trap ×1

exit-code ×1

shell ×1

signals ×1