인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

부딪님의 프로필 이미지
부딪

작성한 질문수

시스템엔지니어가 알려주는 리눅스 기초편 Bash Shell Script

초간단 쉘스크립트-AND,OR

AND에서 조건 둘이 참이어야 실행한다는 부분이 이해가 되지 않아 질문 드립니다.

해결된 질문

작성

·

259

0

안녕하세요. 좋은 강의 잘 듣고 있습니다. 😃

질문 1

AND에서 조건에서 왼쪽이 참이면 오른쪽 명령이 실행된다고 했습니다. 그런데 다음 강좌에서 AND, OR를 정리 할때 조건 둘이 참이어야 명령이 실행된다고 하셔서 조금 혼란이 왔습니다.

test 1==1 && cat test.txt

위 코드에서 1==1 외에 어떤 조건이 또 참이어야 cat test.txt가 실행되는 건가요?

cat test.txt 또한 조건이라면 두 조건이 만족 될 때 실행하고자하는 명령을 추가로 입력할 수 있는걸까요?

질문 2

OR의 경우 왼쪽이 거짓이면 오른쪽 명령이 실행된다고 하셨는데요.

그럼 단순히 OR는 NOT AND의 개념으로 이해를 하면 되는걸까요?

사실 제가 알고 있는 OR는 조건 중 하나가 참이면 명령 실행으로 알고 있어서요.

bash script에서는 AND나 OR나 둘다 조건문인데 명령을 실행시키기 위한 장치처럼 작동하는 건가요?

 

답변 1

2

그로스쿨님의 프로필 이미지
그로스쿨
지식공유자

안녕하세요.

AND와 OR을 사용한 if문 응용이 쉬워보이지만 생각보다 헷갈리기 쉬운 부분이기도 합니다.

질문 1과 2가 같은 맥락으로 답변이 가능할 것 같습니다.

test 1==1 && cat test.txt

이 코드에서 왼쪽의 test 1==1이 참일 때 오른쪽 cat test.txt를 실행하는 이유를 말씀드리면, AND(&&)가 참이 되려면 &&의 왼쪽과 오른쪽이 모두 참이어야 참의 결과가 나오기 때문입니다.

조금 더 쉽게 설명하면 A AND(&&) B 가 참이 되려면 A와 B가 모두 참이 돼야합니다.

여기에서 A가 test 1=1 이고, B가 cat test.txt 인 것이지요.

그러므로 A가 참이면 AND 전체의 명제가 참인 지 거짓인 지 확인을 하기 위해 B를 실행하는 것입니다.

이 때 B가 거짓이면 이 AND연산은 거짓인 것이고 B가 참이면 AND연산은 참의 결과값이 됩니다.

하지만 우리는 실제 AND의 연산 결과는 아무상관이 없지요.

왜냐하면 원하는 결과는 B를 실행하는 순간 얻어낼 수 있으니까요.

이렇게 B가 AND연산의 결과를 결정하게 되므로 B를 실행하도록 만드는 일종의 꼼수(?)라고 볼 수 있습니다.

 

OR도 마찬가지 입니다.

A OR B 가 참이 되려면 A와 B 중의 하나가 참이어야 합니다.

A가 참이라면 OR연산의 결과는 참으로 정해지므로 B가 참인 지 거짓인 지 확인하지 않아도 됩니다.

A가 거짓이라면 OR연산의 결과는 B가 결정하게 되므로 B를 실행하는 것이지요.

 

질문2에서 말씀하신대로 AND나 OR의 특성을 명령을 실행하기 위한 장치로 사용하는 것이 맞습니다.

부딪님의 프로필 이미지
부딪
질문자

빠른 답변 정말 감사합니다 🙂 이제 이해가 되었어요.

부딪님의 프로필 이미지
부딪

작성한 질문수

질문하기