본문 바로가기

진리는어디에

쉘 스크립트(shell script) - 조건문

bash shell script

조건문의 형식

쉘 스크립트의 조건문은 if로 시작하여 [ ] 괄호로 묶여지며, [ ] 괄호 내에의 조건식은 괄호와 공백이 있어야 한다.
예를 들어[ -f /etc/passwd ]의 경우 시작 괄호 '['와 '-f' 사이에는 공백이 꼭 필요하다.

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

if [ 조건 ]; then
    문장
elif [ 조건 ]; then
    문장
else
    문장
fi

test 명령어

test 명령어는 뒤에오는 조건식을 검사하여 참, 거짓 여부를 판단 할 수 있다. 주로 파일 존재 유무, 타입, 권한을 체크 할 때 사용 된다.

test 명령어는 아래 두가지 형태로 조건문에서 사용 가능하다.

test expressions

or

[ expressions ]

산술 비교 연산자

제어문 설명
val1 –eq val2 equal, 변수 val1과 변수 val2 같은 경우 true
val1 –ne val2 negative, 변수 val1과 변수 val2 다른 경우 true
val1 –gt val2 greater then, 변수 val1이 변수 val2 보다 큰 경우 true
val1 –lt val2 less then, 변수 val1이 변수 val2 보다 작은 경우 true
val1 –ge val2 greater or equal, 변수 val1이 변수 val2 보다 크거나 같은 경우 true
val1 – le val2 less or equal, 변수 val1이 변수 val2 보다 작거나 가은 경우 true

파일 검사 연산자

제어문 설명
-a 파일이 존재한 경우 true
-b 파일이 존재하고 블록장치 파일인 경우 true
-c 파일이 존재하고 캐릭터 장치 파일인 경우 true
-d 파일이 존재하고 디렉토리인 경우 true
-e 파일이 존재하고 파일이 있는 경우 true
-f 파일이 존재하고 정규 파일인 경우 true
-g 파일이 존재하고 SetGID가 설정된 경우 true
-h 파일이 존재하고 한 개 이상의 심볼릭 링크가 설정된 경우 true
-k 파일이 존재하고 Sticky bit가 설정된 경우 true
-p 파일이 존재하고 FIFO인 경우 true
-r 파일이 존재하고 읽기 가능한 경우 true
-s 파일이 존재하고 0보다 큰 경우 true
-u 파일이 존재하고 SetUID가 설정된 경우 true
-w 파일이 존재하고 쓰기가 가능한 경우 true
-x 파일이 존재하고 실행 가능한 경우 true

문자열 비교 연산자

제어문 설명
-z string 문자열의 길이가 0인 경우 true
-n string 문자열의 길이가 0이 아닌 경우 true
string1 = string2 문자열 string1string2가 일치하는 경우
string1 != string2 문자열 string1string2가 일치하지 않는 경우
string 문자열이 NULL이 아닌 경우

예제

#!/bin/bash

# $# 입력 받은 매개 변수의 개수를 의미
if [ $# -lt 1 ]; then
    echo “$0 <Account>…”
    exit 0
fi
 
# 명령의 결과를 저장하기 위해 `( back quarter)를 사용했다. 
# ‘(single quarter)과 혼동 할 수 있으므로 주의 하도록 한다.
ret=`grep –w “^$1” /etc/passwd`
 
if test –n “$ret” ; then
    echo $ret
else
    echo “User not found”
fi

부록 1. 같이 보면 좋은 글

 

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!