본문 바로가기

프로그래밍

[유닉스/리눅스] 쉘스크립트 IF문 사용법 정리

bash shell if문 기본 문법

if [ expression 1 ]
then
	expression 1 조건이 true이면 실행
elif [ expression 2 ]
then
	expression 2 조건이 true이면 실행
else
	그 외 나머지 경우에 실행
fi

 

예제)

#!/bin/sh

a=30
b=20

if [ $a == $b ]
then
   echo "a와 b가 같으면 실행."
elif [ $a -gt $b ] # a > b
then
   echo "a가 b보다 크면 실행."
elif [ $a -lt $b ] # a < b
then
   echo "a가 b보다 작을 경우 실행."
else
   echo "그 외 경우에 실행."
fi

 

산술 비교 연산자 의미
A -eq B A와 B는 같다(=) 
A -ne B A와 B는 같지 않다(!=)
A -gt B A는 B보다 크다(>) 
A -ge B A는 B보다 크거나 같다(>=)
A -lt B A는 B보다 작다(<) 
A -le B A는 B보다 작거나 같다(<=

 

문자열 비교 연산자 의미
A == B A와 B는 일치한다 
A != B A와 B는 일치하지 않는다 

 

논리 비교 연산자 의미
A -a B A and B, A && B
A -o B A or B, A || B 

 

파일 비교 연산자 의미
-d 파일 이름 파일이 디렉토리면 참(true)
-e 파일 이름 파일이 존재하면 참(true)
-f 파일 이름 파일이 일반 파일이면 참(true)
-r 파일 이름 파일이 읽기 가능이면 참(true)
-s 파일 이름 파일 크기가 0이 아니면 참(true)
-w 파일 이름 파일이 쓰기 가능이면 참(true)
-x 파일 이름 파일이 실행 가능이면 참(true) 

 

매개 변수

$# 아규먼트 개수
$! 실행을 위해 백그라운드로 보내진 마지막 프로그램 프로세스 번호
$$ 쉘스크립트 PID
$? 실행한 뒤의 반환 값 (백그라운드로 실행된 것 제외)
$_ 지난 명령의 마지막 인자로 설정된 특수 변수
$- 현재 shell이 호출될 때 사용한 옵션들
$* 스크립트에 전달된 전체 인자
$@ $* 와 동일한데 IFS 환경변수를 사용하지 않음