返回退出代码而不关闭shell
|
我想从另一个脚本中调用的BASH脚本返回退出代码,但也可以直接调用它。大致如下所示:
#!/bin/bash
dq2-get $1
if [ $? -ne 0 ]; then
echo \"ERROR: ...\"
# EXIT HERE
fi
# extract, do some stuff
# ...
现在,在第1行中,脚本应该退出并返回退出代码1。问题是
我不能使用return
,因为当我忘记为脚本提供源代码而不是调用它时,return将不会退出,并且脚本的其余部分将被执行并将所有内容弄乱。
我不能使用exit
,因为这会关闭外壳。
我不能使用技巧kill -SIGINT $$
,因为这不允许返回退出代码。
有没有我忽略的可行选择?
没有找到相关结果
已邀请:
4 个回复
犁攀富
来测试脚本是源还是被调用(如果为源,则为false;如果被调用,则为true),然后分别使用
或
。
疼嘶桐
无论是否来源都有效。
绊伦欧
这样就设置了退出代码,而没有退出外壳程序(也没有源脚本)。 对于更复杂的退出问题(具有特定的退出代码),无论是执行还是获取:
如果执行,将设置退出代码30(带有错误消息)。 如果有来源,则退出代码为88。 将退出执行或采购,而不会影响调用外壳。
焙恍挝厂熄
和