[강좌][shell] test 구문에 대하여
======================================================================
SHELL PROGRAMMING [3] Test 조건문
본 강좌는 본인의 허락없이 무단 복사하거나 타 사이트에 등록하는것을
금지 합니다. – 서진우(alang at sysmng.com)
======================================================================
3.1 test 문
test 문은 쉽게 말해서 조건문이라고 보면 된다.
[ expressions ]
expressions 사이나 [ 뒤와, ] 앞에는 꼭 space 를 넣어야 한다.
[ 와 ] 사이에 들어오는 조건을 나타내는 문이 test 문이라고 보면
된다. test 문은 크게 “수치 test”, “파일 test”, “String test”
3개로 나눌수 있다.
3.1.1 수치 Test
수치 Test 는 숫자를 비교하는 것으로 다음과 같이 수치 비교한다.
표현 방식 참이 되는 경우
————————————————
[ $A -eq $B ] A 와 B의 값이 같은 경우
[ $A -ne $B ] A 와 B의 값이 다른 경우
[ $A -gt $B ] A 가 B보다 큰 경우
[ $A -lt $B ] A 가 B보다 작은 경우
[ $A -ge $B ] A 가 B보다 크거나 같은 경우
[ $A -le $B ] A 가 B보다 작거나 같은 경우
————————————————
-eq -ne -gt -lt -ge -le 는 모두 숫작의 크기를 비교할수 있고
소숫점 이하의 숫자는 무시한다.
예제 ——————————————
#!/bin/sh
A=1
B=2
if [ $A -eq $B ]
then
echo “A is equal to B”
elif [ $A -gt $B ]
then
echo “A is greater than B”
elif [ $A -lt $B ]
then
echo “A is less than B”
fi
———————————————–
결과
A is less than B
3.1.2 파일 Test
파일의 존재 유무 및 읽기,쓰기 가능 여부를 Test 하기 위한것이다.
표현 방식 참이 되는 경우
———————————————————
[ -s filename ] file 이 존재하면서 0 보다 큰 경우
[ -f filename ] directory 가 아닌 file 인 경우(크기가 0인것도 포함)
[ -d directory_name ] file 이 아닌 directory 인 경우
[ -w filename ] 쓰기 가능한 경우
[ -r filename ] 읽기 가능한 경우
[ ! -option filename ] option의 조건이 거짓일때
———————————————————
예제 ——————————————
#!/bin/sh
if [ -f test ]
then
if [ -s test ]
then
du -h test
fi
fi
———————————————–
위의 예제는 먼저 이 스크립터가 있는 디렉토리 안에 test 란 파일이
존재 하는지와 크기가 0 byte 이상인지를 확인하고 0 byte 이상이면
이 파일의 크기를 du -h 로 알아보는 스크립터다. 결과는 다음과 같다.
4.0k test
3.1.3 String Test
String Test 는 문자 혹은 문자열을 비교할때 사용되는걸로 문자열 좌우
에는 꼭 ” 를 사용하도록 한다는 것을 잊어서는 안된다.
이는 단순 문자 비교일때는 몰라도 space 가 포함된 문자열이나 문자열의
내용이 아무것도 없는 경우에 문제가 발생하기 때문이다. 그러므로 String
Test 를 할때는 ” 를 이용하는 습관을 들이도록 하자.
표현 방식 참이 되는 경우
———————————————————
[ “String1” = “String2” ] 두 문자열이 같은 경우
[ “String1” != “String2” ] 두 문자열이 다른 경우
[ -z “String” ] 문자열의 길이가 0인 경우
[ -n “String” ] 문자열의 길이가 0이 아닌 경우
———————————————————
예제 ——————————————
#!/bin/sh
echo -n “password :”
read PASS
if [ “$PASS” = “xxxxxxx” ]
then
echo “어서 오세요.!! 관리자님”
else
echo “관리자 인증 실패 하였습니다.”
exit 0
fi
———————————————–
위 예제는 read 값에 입력되는 값이 xxxxxx 와 동일하면 인증에
성공한것이고 그렇지 않은 경우는 인증 실패로 스크립터에서 나오게 된다.
참고 : read 는 키보드로 부터 값을 읽어 들여 변수에 저장한다.
위의 예제로 보면 read 로 인해 쉘프로그램 실행시 입력대기 모드로 들어
가고 여기에 입력되는 키워드가 PASS 의 변수값으로 저장된다.
3.1.4 기타 Test
-a : and 관계 연산자
-o : or 관계 연산자
예제 ——————————————
#!/bin/sh
A=1
B=1
C=2
D=3
if [ \\( “$A” = “$B” \\) -a \\( “$C” != “$D” \\) ]
then
E=${A}${B}${C}${D}
fi
echo $E
———————————————–
위 예제는 A 와 B 가 같고 C 와 D 가 다를때 변수 E 값을 출력한다.
이제 Test 구문에 대해서 감~ 잡았으리라 생각 된다.
Test 구문에 다음에 진행할 if,while,util 문에서 사용되어 test 조건문으로
사용되어 지니 반드시 익혀 두길 바란다.
* 서진우님에 의해서 게시물 복사되었습니다 (2004-10-07 16:03)