Python 개념과 Shell 개념에서 부울(True 및 False) 값은 무엇입니까?

Python 개념과 Shell 개념에서 부울(True 및 False) 값은 무엇입니까?

소금과 관련된 일을 하고 있어요. 거기서 나는 솔트 파일에서 onlyif 조건을 보았습니다. 나는 문서에 제공된 진술에 혼란스러워합니다.

Also be aware that the **boolean value** is determined by the **shell's** concept of True and False, rather than **Python's** concept of True and False.

관련된:https://docs.saltstack.com/en/latest/ref/states/executives.html

내 추측은

  `Shell         Python`

   True = 0      True = 1
  False = 1    False = 0

내가 틀렸다면 정정해주세요.

답변1

정수를 부울 값으로 처리할 수 있는 대부분의 프로그래밍 언어에서 0이 아닌 값(단지 1이 아님)은 "true"이고 0 값은 "false"입니다.

예를 들어 C에서는 다음과 같습니다.

int a = some_function();

if (a) {
    puts("some_function returned a non-zero value");
}

...Python과 비슷합니다(그러나 분명히 구문은 다릅니다).

셸에서는 유틸리티가 원하는 작업에 대해 성공 또는 실패를 알리고 싶고 "I failed"보다 더 자세히 실패를 구분해야 할 수 있으므로 이는 덜 유용합니다.

이는 "성공", "모두 잘 진행되었습니다" 또는 "내가 해야 할 일을 했습니다"를 의미하는 종료 상태 0이 있음을 의미합니다. 다른 모든 종료 값은 "실패"로 간주되어야 합니다. 일부 유틸리티는 0이 아닌 여러 종료 상태를 사용하여 사용자에게 무엇이 잘못되었는지 추가로 알립니다(예: rsync및 설명서의 "종료 코드/값" 참조 curl).

또한 유틸리티가 신호에 의해 종료되면 유틸리티의 종료 상태는 128에 신호 번호를 더한 값이 됩니다( kill -l시스템 참조).

~에서"셸 및 유틸리티" 소개 텍스트POSIX 표준에서(매뉴얼의 다양한 부분에 대해 이야기하면 더 나은 참조를 환영합니다):

EXIT STATUS섹션에서는 유틸리티가 호출 프로그램이나 셸에 반환해야 하는 값과 이러한 값이 반환되는 조건에 대해 설명합니다.일반적으로 유틸리티는 성공적으로 완료되면 0을 반환하고 다양한 오류 조건에서는 0보다 큰 값을 반환합니다.이 섹션에 특정 값이 나열되어 있는 경우 시스템은 이러한 값을 사용하여 오류를 설명해야 합니다. 어떤 경우에는 상태 값이 >0과 같이 더 느슨하게 나열됩니다. 엄격하게 호환되는 애플리케이션은 표시된 범위 내의 특정 값에 의존해서는 안 되며 해당 범위 내의 모든 값을 받을 준비가 되어 있어야 합니다.

예를 들어, 유틸리티는 0을 성공적인 반환으로, 1을 특정 이유로 인한 실패로, > 1을 "오류 발생"으로 나열할 수 있습니다. 이 경우, 지정되지 않은 조건으로 인해 2 또는 3 또는 다른 값이 반환될 수 있습니다. POSIX.1-2008의 이 볼륨에 나열된 단일 특정 오류 값에 의존하기보다는 성공적인 종료 상태 값(이 경우 0)을 테스트하도록 준수 응용 프로그램을 작성해야 합니다. 이렇게 하면 확장 기능이 있는 구현에서도 이식성이 극대화됩니다.


라이브러리 함수는 오류 조건에 대해 0이 아닌(따라서 "true") 값을 반환하는 경우가 있습니다. 예를 들어, 표준 C 함수는 fgetc()error 에 대해 (보통 -1)을 fputc()반환합니다 . 이는 0이 아니기 때문에 "true" 값입니다.EOF

따라서 프로그래밍 언어 및 셸에서 정수가 부울 값으로 해석되는 방식과 오류 조건이 보고되는 방식(두 가지 관련 항목)에 대한 논의 간에는 미묘한 차이가 있습니다.

관련 정보