배쉬 if 문


0

모두가 알듯이 간단한 if진술은 다음과 같습니다.

테스트 명령 인 경우; 그런 다음 결과 명령; fi

그런 다음 의사는 말합니다.

테스트 명령 목록이 실행되고 반환 상태가 0이면 CONSEQUENT-COMMANDS 목록이 실행됩니다.

TEST-COMMAND의 리턴 상태가 규칙을 사용하여 부울 참 / 거짓으로 변환됨을 의미합니까?

반환 상태-0-> true
반환 상태-1-> false

그런 다음 if 문에서 어떤 조치를 취할 것인지 결정합니다.


1
그것이 정확히 의미하는 바입니다 : 어려움은 어디에 있습니까?
AFH

답변:


1

예. 예를 들면 다음과 같습니다.

$ exitwith() { return $1; }
$ for stat in {0..10}; do
> if exitwith $stat; then
> echo "An exit status of $stat is considered true"
> else
> echo "An exit status of $stat is considered false"
> fi
> done
An exit status of 0 is considered true
An exit status of 1 is considered false
An exit status of 2 is considered false
An exit status of 3 is considered false
An exit status of 4 is considered false
An exit status of 5 is considered false
An exit status of 6 is considered false
An exit status of 7 is considered false
An exit status of 8 is considered false
An exit status of 9 is considered false
An exit status of 10 is considered false

그러나 종료 상태는 8 비트 부호없는 정수이므로 범위는 0에서 255까지만 가능하기 때문에 실제로는 그보다 약간 더 복잡합니다. 해당 범위 밖의 값은 모듈로 256을 해당 범위로 줄입니다.

$ for stat in -2 -1 255 256 257; do
> if exitwith $stat; then
> echo "An exit status of $stat (actually $?) is considered true"
> else
> echo "An exit status of $stat (actually $?) is considered false"
> fi
> done
An exit status of -2 (actually 254) is considered false
An exit status of -1 (actually 255) is considered false
An exit status of 255 (actually 255) is considered false
An exit status of 256 (actually 0) is considered true
An exit status of 257 (actually 1) is considered false

2
더 구체적으로 말하면 8 비트 부호없는 정수입니다. 특정 의미에 대해서는 tldp.org/LDP/abs/html/exitcodes.html 을 참조하십시오 .
quixotic

@quixotic : 좋은 지적; 편집했습니다.
Gordon Davisson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.