a=0; このa++戻り終了コードを1にするのはなぜですか?

a=0; このa++戻り終了コードを1にするのはなぜですか?

試してみてください:

$ a=0
$ let a++
$ echo $?
1 # Did the world just go mad?
$ echo $a
1 # Yes, it did.
$ let a++
$ echo $?
0 # We have normality.
$ echo $a
2

これを以下と対照してみてください。

$ b=0
$ let b+=1
$ echo $?
0

そしてこれは(出典:サイレックス):

$ c=0
$ let ++c
$ echo $?
0

ここで何が起こっているのでしょうか?

$ bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)

ベストアンサー1

からhelp let

Exit Status:
If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise..

var++だからこそ郵便はがき-増加、最後のパラメータだと思います。する評価はゼロです。柔らかい...

たぶん、より明確な説明かもしれません。

$ let x=-1 ; echo x=$x \$?=$?
x=-1 $?=0
$ let x=0 ; echo x=$x \$?=$?
x=0 $?=1
$ let x=1 ; echo x=$x \$?=$?
x=1 $?=0
$ let x=2 ; echo x=$x \$?=$?
x=2 $?=0

おすすめ記事