안녕하세요, 박현명입니다..

 

이번 글은 지난 글에 이어 Shell Script 작성 시 if문 사용법에 대한 두 번째 글입니다..

 

지난 글에서 공지해 드린 대로 이번 글에서는 if문 조건식에서 사용되는 각종 연산자 및 옵션 등에 대해서 설명 드리도록 하겠습니다..

 

--------------------------------------------------------------------------------(지난 글)--------------------------------------------------------------------------------

1. if문

 

(1) 기본 사용법

if [ 조건식 ]; then          // if문 시작

    ~

elif

    ~

else

    ~

fi                                  // if문 종료

if문은 IT업계에 종사하는 분이라면 굳이 개발자가 아니더라도 누구나 다 알고 계실 겁니다..

 

elif 는 else if 구문이라는 것도 다 아실 것이구요..

 

위 구문에서 한 가지 주의할 점은 if문 선언 시의 띄어쓰기와 세미콜론(;) 입니다..

 

if 와 [ ](대괄호) 사이는 반드시 한 칸 띄워주어야 합니다..(제가 Shell Script를 처음 작성할 때 이 띄어쓰기를 간과했다가 한참을 헤맸던 기억이..;;)

 

그리고 위와 같이 if 와 then 을 한 line에 나열하려면 반드시 세미콜론(;)을 사용해야 합니다..

 

세미콜론을 사용하지 않으려면 다음과 같이 if 다음 열에 then 을 사용해야 합니다..

if [ 조건식 ]

then                    // if문 시작

    ~

elif

    ~

else

    ~

fi                         // if문 종료

 또한, 조건식을 넣는 부분에 [ ](대괄호) 대신 test 구문을 사용할 수도 있습니다..

if test 조건식

then                    // if문 시작

    ~

elif

    ~

else

    ~

fi                         // if문 종료

test 구문과 [ ](대괄호)는 동일한 기능을 하며, 취향에 따라 골라 쓰면 됩니다..

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

(2) 테스트 연산자

 

[ ](대괄호) 안의 조건식에는 여러 종류의 테스트 연산자를 사용할 수 있으며, 연산자의 종류 및 기능은 다음과 같습니다..

* 다음 조건을 충족시킬 경우, true 리턴

-e : 존재하는 파일
-f : 보통 파일
-d : 파일이 디렉토리
-s : 파일 크기가 0이 아님
-z : 문자열이 null임. 길이가 0
-n : 문자열이 null이 아님
-c : 파일이 문자 디바이스(키보드, 모뎀, 사운드 카드..)
-b : 파일이 블럭 디바이스(플로피나 CD롬)
-p : 파일이 파이프
-h : 파일이 하드 링크
-L : 파일이 심볼릭 링크
-S : 파일이 소켓
-t : 파일 디스크립터가 터미널 디바이스와 연관 있음
-r : 테스트를 돌리는 사용자가 읽기 퍼미션을 갖고 있음
-w : 테스트를 돌리는 사용자가 쓰기 퍼미션을 갖고 있음
-x : 테스트를 돌리는 사용자가 실행 퍼미션을 갖고 있음
-g : 파일이나 디렉토리에 set-group-id 플래그가 세팅되어 있음

가령 예를 들자면,

if [ -d /tmp ]; then

    echo '/tmp 디렉토리가 존재합니다.'

else

    echo '/tmp 디렉토리가 존재하지 않습니다.'

fi

위와 같이 사용하면 됩니다..

 

파일과 관련한 연산자일 경우는 연산자 뒤에 파일명이, 디렉토리와 관련한 연산자일 경우는 연산자 뒤에 디렉토리명이 명시되어야 합니다..

 

다음은 산술 비교 연산자 및 문자열 비교 연산자입니다..

 

산술 비교 연산자

문자열 비교 연산자

-eq (equal)

== 

-ne (not equal)

!=

-gt (greater than)

 

-ge (greater than or equal)

 

-lt (less than)

 

-le (less than or equal)

 

 

산술 비교 연산자는 수치 비교를 위해 사용되며, 다음과 같이 사용됩니다..

if [ ${input} -eq 0 ]; then

    echo 'input 값은 0과 같습니다.'

else

    echo 'input 값은 0과 같지 않습니다.'

fi

문자열 비교 연산자는 수치 비교를 위해 사용되며, 다음과 같이 사용됩니다..

if [ ${input} == "test" ]; then

    echo 'input 값은 test 문자열과 같습니다.'

else

    echo 'input 값은 test 문자열과 같지 않습니다.'

fi

'$(달러)' 문자로 시작되는 값은 변수를 의미합니다..

 

두 번째 글은 여기서 마치도록 하겠습니다..

 

다음 글에서는 조건식의 조건이 두 개 이상일 경우 사용되는 연산자와 if문 예제 스크립트에 대해서 게재하도록 하겠습니다..

 

감사합니다..


+ Recent posts