쉘 스크립트에서 if 문 관련 질문입니다.

hoony의 이미지

쉘 스크립트에서 여러 조건을 체크하고 싶은데요

예를 들어

if [ ! ( 조건문1 -o 조건문2 -o 조건문3 ) ] ; then

위와 같이 표현하고 싶으면 어떡해야 하나요?

괄호는 사용할수 없다고 나오는데.. 비슷한 문법이 있나요?

코퍼스의 이미지

음..다시 생각해보니 논리에 맞게 해야되겠죠..

원래 조건식을 여러개 쓰시려면

 if [  -o condi1 ] && [  -o condi2 ] && [  -o condi3 ] ; then
    some_do
 fi

해야 되는데..
님이 원한게.. !( -o condi1 && -o condi2 && -o condi3) 이니..
if [ ! -o condi1 ] || [ ! -o condi2 ] || [ ! -o condi3 ]; then
  some_do
fi

이렇게 해야 될것 같네요..

ls -al 'happy' | grep 'possible'

A few Good Man

cinsk의 이미지

괄호를 쓸 수 없다는 이유가 뭔가요? test(1) 명령은 괄호 처리 지원합니다.
따라서

if [ ! \( 조건문1 -o 조건문2 -o 조건문3 \) ]; then

라고 하면 됩니다.

(...) 대신 \( ... \)를 써야 하는 이유는, ()가 shell이 처리하는 특수 기호라서 test(1) 명령에 직접 전달하기 위해서입니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/