我正在学习bash。 我学会了命令或函数的返回值是一个整数值。 我想知道我是否应该明确地将其视为整数,
declare -i return_value
bash some_function
return_value=$?
if (( return_value == 1 )); then
exit 1
fi
或将其视为字符串值。
bash some_function
return_value="$?"
if [[ "$return_value" == "1" ]]; then
exit 1
fi
请告诉我你的回答或评论。非常感谢你。
答案 0 :(得分:3)
它是一个整数,所以你应该这样对待它。但是,事先声明变量并不是必需的(而且不常见)。
这真的是一个偏好问题,但我可能会这样做:
bash some_function
return_value=$?
if [ $return_value -eq 1 ]; then
exit 1
fi
只是因为您知道它是返回代码,因此您不必小心引用或使用扩展测试[[
。使用-eq
而不是=
会传达您使用整数进行处理的事实。
您可能还需要考虑此选项,具体取决于上下文:
if ! some_function; then
exit 1
fi
这略有不同,因为它没有区分非零退出代码,但它可能会做你想要的。
答案 1 :(得分:2)
Exit codes and exit status are integers,但在bash variables are untyped中,您可以选择将它们视为字符串或整数。
我更喜欢将它们视为整数,我经常看到使用$?
和整数比较运算符的惯用结构,如下所示:
some_function
if [ $? -ne 0 ]; then
# handle error here
fi