3. OS이야기/03. Shell Script

[UNIX/LINUX] Shell Script 기본 - 1.if문 (2) 테스트 연산자

알 수 없는 사용자 2014. 4. 17. 17:37

(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


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