해결된 질문
작성
·
259
0
안녕하세요. 좋은 강의 잘 듣고 있습니다. 😃
AND에서 조건에서 왼쪽이 참이면 오른쪽 명령이 실행된다고 했습니다. 그런데 다음 강좌에서 AND, OR를 정리 할때 조건 둘이 참이어야 명령이 실행된다고 하셔서 조금 혼란이 왔습니다.
test 1==1 && cat test.txt
위 코드에서 1==1
외에 어떤 조건이 또 참이어야 cat test.txt
가 실행되는 건가요?
cat test.txt
또한 조건이라면 두 조건이 만족 될 때 실행하고자하는 명령을 추가로 입력할 수 있는걸까요?
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의 특성을 명령을 실행하기 위한 장치로 사용하는 것이 맞습니다.
빠른 답변 정말 감사합니다 🙂 이제 이해가 되었어요.