조건문에서 논리연산자 and, or 사용하기
on ShellScript
쉘스크립트의 조건문에서 기본적인 조건식의 형태를 알 수 있다.
그러나 하나의 조건만으로는 부족한 경우가 많기 때문에 논리 연산자인 AND 와 OR 를 사용해서 여러 조건들을 묶어낼 수 있어야 한다.
쉘스크립트에서는 이러한 논리합과 논리곱을 아래와 같이 사용한다.
if [ 1 -lt 3 ] && [ "2" -eq 2 ] ; then
echo "1 < 3 and 2 == 2"
fi
여러 조건 [ expression ] 들을 &&
(and) 나 ||
(or) 로 묶어서 사용할 수 있다.
만약 이런 논리 연산자들을 여러개 중첩해서 사용해야 할 경우, 다른 프로그래밍에서 하듯 괄호를 사용해 묶어줄 수 있다.
아래 코드에서 첫번째 조건인 [ 1 -lt 2 ]
는 1 < 2 이므로 참이 된다.
두번째 조건은 () 로 묶인 두 조건이 되는데, && 로 묶였기 때문에 [ 1 == 2 ]
에서 거짓이 나와 최종적으로 거짓이 된다.
그러나 첫번째 조건과 || 로 묶여있으므로 최종적으로 참이 되며, 더 많은 괄호를 사용해 여러 조건들에 논리연산자를 붙여 줄 수 있다.
if [ 1 -lt 2 ] || ( [ 2 == 2 ] && [ 1 == 2 ] ) ; then
echo SUCCESS
fi
조건을 &&
나 ||
로 묶지 않더라도, 조건 내에서 [ -a ]
(AND) 혹은 [ -o ]
(OR) 연산자를 사용함으로써 같은 결과를 낼 수 있다.
아래 코드는, 두 조건을 && 로 묶은 것과 동일하다.
if [ 1 -lt 3 -a "2" -eq 2 ] ; then
echo "1 < 3 and 2 == 2"
fi