Linux 쉘을 사용할 때 0 종료 상태는 부울 논리의 종료 상태와 다릅니까?

Linux 쉘을 사용할 때 0 종료 상태는 부울 논리의 종료 상태와 다릅니까?

예를 들어 앰퍼샌드 연산자를 사용하여 셸에서 명령을 실행하고 command1&&command2첫 번째 명령이 성공적으로 실행되면 종료 상태가 0인 것으로 이해합니다.

이것은 0이 거짓이고 1이 참인 부울 논리의 논리와 비슷하거나 다른가요? 아니면 제가 잘못 이해한 것인가요?

사용하는 쉘 유형에 따라 차이가 있습니까? 현재 Bourne-Again Shell을 실행하고 있습니다.

답변1

Shell은 대부분 0으로 오류와 성공이 없음을 나타냅니다. 따라서 0이 일반적으로 false인 많은 프로그래밍 언어와 달리 이러한 의미에서는 논리적으로 true입니다. 요즘 현대 언어는 참과 거짓이라는 뚜렷한 논리적 가치를 갖는 경향이 있습니다.

답변2

더 나은 근거는 실제로 '성공'은 단 하나뿐이지만 '실패'에는 파일을 찾을 수 없음, 인수 오류, 계산 오류 등 여러 가지 이유가 있다는 것입니다. 이는 쉘뿐만 아니라 OS의 관례였습니다. , 프로세스 간 통신에서 - exit(2)시스템 호출 에 의해 전송되고 호출에 의해 수신된 반환 코드입니다 wait(2).

관련 정보