![bash 변수 할당이 최종 종료 코드 $에 영향을 미치는 이유는 무엇입니까? 이것은 어디에 문서화되어 있습니까?](https://linux55.com/image/92568/bash%20%EB%B3%80%EC%88%98%20%ED%95%A0%EB%8B%B9%EC%9D%B4%20%EC%B5%9C%EC%A2%85%20%EC%A2%85%EB%A3%8C%20%EC%BD%94%EB%93%9C%20%24%EC%97%90%20%EC%98%81%ED%96%A5%EC%9D%84%20%EB%AF%B8%EC%B9%98%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%20%EC%9D%B4%EA%B2%83%EC%9D%80%20%EC%96%B4%EB%94%94%EC%97%90%20%EB%AC%B8%EC%84%9C%ED%99%94%EB%90%98%EC%96%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
환경 변수를 설정하면 마지막 기존 코드 변수가 수정된다는 사실에 놀랐습니다 $?
.
$ false
$ echo $?
1
$ false
$ FOO=BAR
$ echo $?
0
$
Bash 매뉴얼에는 다음과 같이만 나와 있습니다 $?
.
($?) 가장 최근에 실행된 전경 파이프의 종료 상태로 확장됩니다.
설정 중인 변수의 종료 코드는 어디에 기록됩니까?실패할까요?
답변1
오른쪽 표현식을 평가할 수 없으면 할당이 실패할 수 있습니다.
예를 들어
$ x=HELLO
$ x=$((1/0))
bash: 1/0: division by 0 (error token is "0")
$ echo $?
1
이 경우 값은 $x
변경되지 않습니다.
$ echo $x
HELLO