쉘 스크립트 조건문

김승윤·2021년 11월 10일
0

쉘 스크립트의 조건문은 if로 시작하여 [ ] 괄호로 묶여지며, [ ] 괄호 내에의 앞뒤로 공백이 있어야 합니다.

조건문의 끝은 ;로 표현 되며, 만일 then 문장을 입력할 때는 ;를 생략해도 됩니다.

if문 사용법

조건이 하나일 경우

if [ 조건1 ]; then
  처리1
fi

조건1이 만족하는 경우 처리1을 실행합니다.
만약 조건1이 만족하지 않는 경우 처리1을 실행하지 않습니다.

조건1이 만족하지 않을 때 처리2를 실행할 경우

if [ 조건1 ]; then
  처리1
else
  처리2
fi

조건1에 만족하지 않는 경우 다른 처리를 할 때는 else를 사용합니다.

조건을 여러 개 작성할 경우

if [ 조건1 ]; then
  처리1
elif [ 조건2 ]; then
  처리2
else

elif를 사용해 조건식을 늘릴 수 있습니다.

조건문 종류

비교식

[ -z ${A} ] : A 문자열의 길이가 0이면 TRUE
[ -n ${A} ] : A 문자열의 길이가 0이 아니면 TRUE
[ ${A} -eq ${B} ] : A와 B값이 같으면 TRUE			(equal)
[ ${A} -ne ${B} ] : A와 B값이 다르면 TRUE			(negative)
[ ${A} -gt ${B} ] : A가 B보다 크면 TRUE			(greater than)	
[ ${A} -ge ${B} ] : A가 B보다 크거나 같으면 TRUE		(greater than equal)
[ ${A} -lt ${B} ] : A가 B보다 작으면 TRUE			(less than)
[ ${A} -le ${B} ] : A가 B보다 작거나 같으면 TRUE		(less than equal)

[ ${A} < ${B} ] : A값이 B값보다 작으면 TRUE			
[ ${A} <= ${B} ] : A값이 B값보다 작거나 같으면 TRUE			
[ ${A} > ${B} ] : A값이 B값보다 크면 TRUE		
[ ${A} >= ${B} ] : A값이 B보다 크거나 같으면 TRUE		
[ ${A} ==, = ${B} ] : A값이 B값과 같으면 TRUE		
[ ${A} != ${B} ] : A값이 B값과 같지 않으면 TRUE	

[ 조건식A -a 조건식B ] : 조건식 A와 B가 모두 TRUE이면 TRUE (&& 와 동일)
[ 조건식A -o 조건식B ] : 조건식 A가 TRUE거나 조건식B가 TRUE면 TRUE (|| 와 동일)

파일관련

[ -d ${A} ] : A 파일이 디렉토리면 TRUE				(Directory)
[ -e ${A} ] : A 파일이(노드, 디렉토리, 소켓 등등 모두) 존재하면 TRUE	(exist)
[ -L ${A} ] : A 파일이 심볼릭 링크면 TRUE				(symbolic link)
[ -r ${A} ] : A 파일이 읽기 가능하면 TRUE				(readable)
[ -s ${A} ] : A 파일의 크기가 0 보다 크면 TRUE			
[ -w ${A} ] : A 파일이 쓰기 가능하면 TRUE				(writeable)
[ -x ${A} ] : A 파일이 실행 가능하면 TRUE				(execute)
[ -c ${A} ] : A 파일이 Special character file 이면 TRUE
[ -f ${A} ] : A 파일이 디렉토리가 아닌 일반 regular 파일이면 TRUE
[ -S ${A} ] : A 파일이 소켓이면 TRUE
[ ${A} -nt ${B} ] : A 파일 B 파일보다 최신파일이면 참		(newer than)
[ ${A} -ot ${B} ]  : A 파일이 B 파일보다 이전파일이면 참		(older than)
[ ${A} -ef ${B} ] : A 파일과 B 파일이 같은 파일이면 참		(equal file)



실습

test.sh 라는 파일 안에 다음과 같은 간단한 조건문을 넣었습니다.

#! /bin/bash

num=10

if [ "${num}" -eq 5 ]; then
        echo "num is 5"
elif [ "${num}" -eq 6 ]; then
        echo "num is 6"
else
        echo "num is not 5 or 6"
fi

만약 num이 5와 같다면 "num is 5"가 나올 것이고 num이 6과 같다면 "num is 6"가 나올 것이고 둘 다 아니라면 "num is not 5 or 6"가 나올 것입니다. num은 10이라고 정해놨으므로 스크립트 파일을 실행하면 "num is not 5 or 6"가 나와야 합니다.

간단한 실습을 해보았지만, 조건문을 여러 개 쓰면 상당히 복잡해질 것입니다. 하지만 조건문이 무엇이고 어떤 종류가 있는지 알아보았기 때문에 익숙해지도록 많이 사용해보면 좋을 것 같습니다.

0개의 댓글