3. OS이야기/03. Shell Script

[UNIX/LINUX] Shell Script 기본 - 1.if문 (3) 논리 연산자

알 수 없는 사용자 2014. 4. 18. 13:22

(3) 논리 연산자

 

[ ](대괄호) 안의 조건식에 두 개 이상의 조건을 넣어야 할 경우 논리 연산자를 사용할 수 있으며, 연산자의 종류 및 기능은 다음과 같습니다.


-a : and, &&

-o : or, ||



논리 연산자의 사용법은 다음과 같습니다.


if [ 조건식1 -a 조건식2 ]; then

    ~

else

    ~

fi



다들 알고 계시겠지만, and 논리 연산자의 경우 '조건식1' 이 true 이어야지만 '조건식2' 로 넘어가며, '조건식1' 이 false인 경우 '조건식2' 의 체크없이 바로 else 구문으로 넘어가게 됩니다.

 

사용 예를 들자면, 다음과 같습니다.


if [ -f ${file1} -a -f ${file2} ]; then

    echo 'file1과 file2는 모두 파일입니다.'

else

    echo 'file1과 file2가 모두 파일인 것은 아닙니다.'

fi


이상은 논리 연산자에 대한 사용법에 대해서 설명 드렸고, 다음은 자주 사용되는 연산자는 아니지만 추가로 덧붙입니다.

 


(4) 파일 생성 시기 비교 연산자

 

[ ](대괄호) 안의 조건식에 두 개의 파일 중 어떤 것이 더 먼저, 혹은 나중에 생성되었는지 알고자 할 경우 다음과 같은 비교 연산자를 사용할 수 있습니다.


f1 -nt f2 : f1파일이 f2파일보다 최신임(newer than)

f1 -ot f2 : f1파일이 f2파일보다 예전것임(older than)



위 연산자에 대한 예시는 따로 들지 않겠습니다.

 

이상으로 if문에서 자주 사용되는 연산자들과 사용법에 대해서 알아보았구요.

 

예제 스크립트로 바로 넘어갈까 했는데 한 가지 더 설명드리고 예제 스크립트를 보여 드리는 편이 나을 것 같아서 잠깐 언급하도록 하겠습니다.

 


* Shell Script 에서 input 값 받아 처리하기

 

우리가 Shell Script를 작성하다 보면 외부로부터 받은 input 값을 스크립트 내부에서 처리해야 하는 경우가 종종 발생하게 됩니다.

 

가령, ./test.sh [input_parameter1] [input_parameter2] 와 같은 식으로 말이죠.

 

위와 같이 외부로부터 받은 input 값은『 위치 매개변수 』를 통하여 처리하면 됩니다.


$1, $2, $3, ... : input_parameter1은 $1 위치 매개변수로, input_parameter2는 $2 위치 매개변수로 처리

※ $0 : 해당 Shell Script의 이름



예를 들어, 스크립트로 넘어온 input 값이 0인지 아닌지 비교하는 스크립트(ex. number_compare.sh)를 작성하고 싶다 하면 다음과 같이 하면 됩니다.


#!/bin/sh

if [ $1 -eq 0 ]; then

    echo 'input 값은 0 입니다.'

else

    echo 'input 값은 0 이 아닙니다.'

fi




위와 같이 작성하고 다음과 같이 실행시키면 됩니다.


./number_compare.sh 숫자