为什么((count ++))首次运行返回1退出代码

8 bash

我不知道为什么下面指示的行返回1而后续执行的((count++))返回0.

[me@server ~]$ count=0
[me@server ~]$ echo $?
0
[me@server ~]$ count++
-bash: count++: command not found
[me@server ~]$ (count++)
-bash: count++: command not found
[me@server ~]$ ((count++))
[me@server ~]$ echo $?
1 <------THIS WHY IS IT 1 AND NOT 0??
[me@server ~]$ ((count++))
[me@server ~]$ echo $?
0
[me@server ~]$ ((count++))
[me@server ~]$ echo $?
0
[me@server ~]$ echo $count
3
Run Code Online (Sandbox Code Playgroud)

Ini*_*ian 11

请参阅excerpt从help let网页,

如果最后一个ARG的计算结果为0,则返回1; 否则返回0.

由于操作是后增量,因此保留((count++))了第一次0,因此返回1

注意,对于预增量不会发生同样的情况((++count)),因为1在第一次迭代时,该值被设置为.

$ unset count
$ count=0
$ echo $?
0
$ ++count
-bash: ++count: command not found
$ echo $?
127
$ ((++count))
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)