为什么`((0))`在.sh脚本中的返回值为1?

lan*_*nza 2 bash shell sh

> [ 0 ]; echo $?
0
> [[ 0 ]]; echo $?
0
> (( 0 )); echo $?
1
> [ 1 ]; echo $?
0
> [[ 1 ]]; echo $?
0
> (( 1 )); echo $?
0
Run Code Online (Sandbox Code Playgroud)

是否(( 0 ))只是为了匹配其他语言中的典型数值false 的行为?IE哪里true == 1false == 0

Bar*_*mar 7

bash手册:

(( expression ))
算术表达式根据下面描述的规则进行评估(参见Shell Arithmetic).如果表达式的值不为零,则返回状态为0; 否则返回状态是1.

您的假设可能是正确的,它模仿许多编程语言将任何非零值视为真实的方式.然后你可以写:

if (( <expression> ))
then
    ...
fi
Run Code Online (Sandbox Code Playgroud)

类似于你在C中的表现.