![a=0;이 a++ 반환 종료 코드를 1로 만드는 이유는 무엇입니까?](https://linux55.com/image/21020/a%3D0%3B%EC%9D%B4%20a%2B%2B%20%EB%B0%98%ED%99%98%20%EC%A2%85%EB%A3%8C%20%EC%BD%94%EB%93%9C%EB%A5%BC%201%EB%A1%9C%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
시도 해봐:
$ 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++
그렇기 때문에우편 엽서-증가, 마지막 매개변수인 것 같아요하다평가는 0입니다. 연약한...
어쩌면 더 명확한 설명이 될 수도 있습니다.
$ 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