我应该如何对待命令或函数的返回值?作为字符串还是整数?

时间:2016-08-29 19:24:47

标签: bash

我正在学习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

请告诉我你的回答或评论。非常感谢你。

2 个答案:

答案 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