일상 메모장

Shell script(쉘) if 조건문, 조건식 본문

Linux & Windows

Shell script(쉘) if 조건문, 조건식

핸드오버 2020. 1. 16. 10:00

안녕하세요.

 

오늘은 쉘 스크립트에서 if 문과 조건식 사용하는 방법을 포스팅할께요.

 

if 문 사용법

if 문 형식은 아래와 같습니다. (if 문 후에 나오는 '[' 사이에 스페이스바가 들어가야 합니다.)

if [ 값1 조건식 값2 ] ; then
	실행문
fi

# 사용 예
VAL1=3
VAL2=4

if [ ${VAL1} -eq ${VAL2} ] ; then
	echo "equal"
fi

변수의 값을 참조할때는 ${변수이름} 처럼 중괄호로 감싸주는 습관을 들이면 좋습니다.

$변수이름 으로 해도 위와같은 스크립트는 동작하지만 변수의 값을 참조하면서 뒤에 다른 문자열이

붙는 경우 오류가 날수 있습니다.

VAL=3
#잘못된 사용
echo "Value : $VALresult"
#올바른 사용
echo "Value : ${VAL}result"

조건문 종류

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

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

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

모두 아시겠지만 위의 조건문을 쉽게 외우려면 영어로 외우시면 편합니다. ^^;

-eq : EQual

-ne : NEgative

-gt : Greater Than

-ge : Greater than Equal

-lt : Less Than

-le : Less than Equal

-d : Directory

-e : Exist

-L : symbolic Link

-r : Readable

-w : Writeable

-x : eXecute

-nt : Newer Than

-ot : Older Than

-ef : Equal File

사용예

#!/bin/bash

FILENAME="/home/test/temp"
VALUE=10

if [ ${VALUE} -eq 10 ] ; then
	echo "VALUE is 10!"
fi

# 아래 -a (&&) 조건문은 아래와 같이 변경 가능합니다.
# if [ ${VALUE} -gt 5 ] && [ ${VALUE} -lt 15 ] ; then
if [ ${VALUE} -gt 5 -a ${VALUE} -lt 15 ] ; then
	echo "VALUE is greater than 5 and less than 15!"
fi

if [ -e ${FILENAME} ] ; then
	echo "${FILENAME} exists"
fi

오늘은 여기까지 포스팅 할께요~ 읽어주셔서 감사합니다~!