"만약!"은(는) 무슨 뜻인가요? 의미는?

"만약!"은(는) 무슨 뜻인가요? 의미는?

나는 다음과 같은 if/then 문을 발견했습니다.

if ! foo ; then
        echo "blah" 
        exit 1
fi

구체적으로 무엇을 의미하나요 if !? " foo결과가 올바르지 않으면 어떻게 되나요?" "종료 코드가 foo0이 아니면 어떻게 되나요?"

답변1

!명령 종료 상태의 의미를 반대로 바꿉니다. 이는 가 아닌 POSIX 셸 구문의 일부입니다 if.POSIX 사양:

예약어라면! 파이프라인 이전이 아닌 종료 상태는 파이프라인에 지정된 마지막 명령의 종료 상태여야 합니다. 그렇지 않으면 종료 상태는 마지막 명령의 종료 상태를 논리적으로 부정해야 합니다. 즉, 마지막 명령이 0을 반환한 경우 종료 상태는 1이어야 하며, 마지막 명령이 0보다 큰 값을 반환한 경우 종료 상태는 0이어야 합니다.

답변2

논리 연산자와 동등한 부울 연산자입니다.아니요.

바라보다 man bash:

!
    표현식이 거짓이면 표현식은 참입니다.

귀하의 예에서는 fooecho 그렇지 않은 경우 blah.

답변3

다른 답변에 추가하기 위해 이 코드는 !다음과 같은 코드 작성을 방지하는 데 사용됩니다.

if foo ; then
    # everything that used to follow "fi" in the previous version
else
    echo "blah" 
    exit 1
fi

존재하는 경우에만 유효fiif절은 유효하지 않기 때문입니다. (댓글은 포함되지 않습니다.)

이런 식으로 작성하면 한 번의 들여쓰기 수준이 소모됩니다. 이는 하드코어입니다.구조화된 프로그래밍사람들은 그것이 지불할 가치가 있는 가격이라고 말할 것입니다. 소프트웨어 개발 연구소(Software Development Institute)에서는 exit프로그램의 중간 부분이 더 나을 것이 없으며 완전히 악하기 goto end때문에 goto추가 중첩 수준이 개선이라고 말합니다.

한 경쟁 학교는 "그렇습니다. 화면 오른쪽에서 모든 코드를 밀어낼 때까지 들여쓰기는 훌륭합니다."라고 말했습니다.

그런 다음 두 진영 모두 약간 이상하다고 생각하는 사람들이 있으며 가능한 한 부정적인 논리를 피하는 것이 가장 좋으며 프로그램이 끝날 때 예외를 닫고 정상이 먼저 와야 한다는 점을 관찰합니다.

쿨에이드(Kol-Aid)를 선택하고 마셔보세요.

관련 정보