【发布时间】:2011-09-01 00:52:42
【问题描述】:
我想从 BASH 脚本返回一个退出代码,该代码在另一个脚本中调用,但也可以直接调用。大致是这样的:
#!/bin/bash
dq2-get $1
if [ $? -ne 0 ]; then
echo "ERROR: ..."
# EXIT HERE
fi
# extract, do some stuff
# ...
现在在 EXIT HERE 行中,脚本应该退出并返回退出代码 1。问题在于
- 我不能使用
return,因为当我忘记获取脚本而不是调用它时,返回将不会退出,并且脚本的其余部分将被执行并搞砸了。 - 我不能使用
exit,因为这会关闭外壳。 - 我不能使用漂亮的技巧
kill -SIGINT $$,因为这不允许返回退出代码。
有没有我忽略的可行替代方案?
【问题讨论】:
-
我的建议是不要忘记获取脚本。
-
软件的编写方式应始终确保误用不会导致问题。
-
我不同意尼尔斯的建议。相反,永远不要获取脚本,而是始终调用它。
-
检查
$SHLVL的值是否有条件退出。
标签: bash return exit return-code