【发布时间】:2015-07-30 09:11:14
【问题描述】:
我有一个非常简单的脚本。
test.sh
_EXECUTE_METHOD () {
exit 1
}
_EXECUTE_METHOD
ERROR_CODE=$?
if [[ $ERROR_CODE -eq 1 ]]; then
echo "Got error"
exit 0
fi
当exit 1 在函数内部执行时,该脚本立即终止。我想从函数中捕获这个退出状态并在主脚本中处理它。
我试过set -e & set +e,还是没有成功。我不能使用return 声明。
实际输出:
$ sh test.sh
$ echo $?
1
$
实际输出:
$ sh test.sh
Got error
$ echo $?
0
$
【问题讨论】:
-
"我不能使用
return声明。" - 是的你可以!试试看吧。 -
分号后缺少
then。此外,[[只不过是一个可移植性陷阱。应该使用[。 -
@Jens 甚至可以完全放弃使用
[。 Example