Bash에 대한 빠른 부울 입문서
if
문은 인수로 명령을한다 (처럼 &&
, ||
등). 명령의 정수 결과 코드는 부울 (0 / null = true, 1 / else = false)로 해석됩니다.
test
문은 인수로 연산자와 피연산자를 사용 하고 같은 형식의 결과 코드를 반환합니다 if
. test
명령문 의 별명은 보다 복잡한 비교를 수행 [
하는 데 자주 사용됩니다 if
.
true
및 false
문은 아무것도하지 않고 그 결과 코드를 반환 (0과 1, 각각). 따라서 Bash에서 부울 리터럴로 사용할 수 있습니다. 그러나 문장을 문자열로 해석되는 곳에 넣으면 문제가 발생합니다. 귀하의 경우 :
if [ foo ]; then ... # "if the string 'foo' is non-empty, return true"
if foo; then ... # "if the command foo succeeds, return true"
그래서:
if [ true ] ; then echo "This text will always appear." ; fi;
if [ false ] ; then echo "This text will always appear." ; fi;
if true ; then echo "This text will always appear." ; fi;
if false ; then echo "This text will never appear." ; fi;
이것은 echo '$foo'
vs 와 같은 것을하는 것과 유사합니다 echo "$foo"
.
test
명령문을 사용할 때 결과는 사용 된 연산자에 따라 다릅니다.
if [ "$foo" = "$bar" ] # true if the string values of $foo and $bar are equal
if [ "$foo" -eq "$bar" ] # true if the integer values of $foo and $bar are equal
if [ -f "$foo" ] # true if $foo is a file that exists (by path)
if [ "$foo" ] # true if $foo evaluates to a non-empty string
if foo # true if foo, as a command/subroutine,
# evaluates to true/success (returns 0 or null)
즉 , 당신은 그냥 패스로 테스트 뭔가 원하는 경우 / (일명 / "true"를 "거짓") 실패, 다음에 명령을 전달 if
하거나 &&
괄호없이 등 문. 복잡한 비교를 위해서는 적절한 연산자와 함께 대괄호를 사용하십시오.
그리고 그래, 내가 거기 배쉬의 기본 부울 형식 같은 건 없다, 그리고 알고 있어요 if
및 [
및 true
기술적으로 "명령"이 아니라 "문"이다; 이것은 매우 기본적인 기능 설명입니다.