인프런 커뮤니티 질문&답변

윤동희님의 프로필 이미지

작성한 질문수

리눅스 쉘 스크립트 마스터

산술 확장

true 가 0인가요??

21.05.19 01:28 작성

·

25K

2

3분 40초 쯤에 설명하실 때, true = 0, false = 1 이라고 말씀 하셨는데,

C++, java 등의 컴퓨터 언어에선 true=1, false=0 으로 사용하고 있잖아요.

쉘 스크립트 에서만 true = 0 인 건가요?

답변 1

2

홍영기님의 프로필 이미지
홍영기
지식공유자

2021. 05. 19. 11:36

윤동희님 안녕하세요:)  질문에 답변드립니다.

말씀하신 것처럼 프로그래밍 언어에서는 1은 참이고, 0은 거짓으로 처리됩니다

반면, 리눅스 쉘에서는 명령의 종료 상태 값은 0을 참으로, 1을 거짓으로 처리하고 있습니다

쉘에서의 함수 종료 처리 또한 마찬가지죠. 정상(exit 0), 오류(exit 1)

아래 예문들은 그 특징을 잘 보여줍니다

admin☠️  true;echo $?

0

admin☠️  false;echo $?

1

admin☠️  if true; then echo true; else echo false; fi

true

admin☠️  if false; then echo true; else echo false; fi

false

admin☠️  if (true); then echo true; else echo false; fi

true

admin☠️  if (false); then echo true; else echo false; fi

false

admin☠️  if $(true); then echo true; else echo false; fi

true

admin☠️  if $(false); then echo true; else echo false; fi

false

그러나, 산술 확장의 경우는 예외적으로 프로그래밍 언어에서의 참(1)과 거짓(0) 논리 규칙을 따릅니다

admin☠️  if ((0)); then echo true; else echo false; fi

false

admin☠️  if ((1)); then echo true; else echo false; fi

true

여기까지 입니다. 좋은 질문 주셨네요. ㅎㅎ

ewgregerg c님의 프로필 이미지

2024. 01. 09. 14:42

압도적 감사