리눅스 셸 스크립트: if 문 사용법과 다양한 비교 방법
이 글에서는 리눅스 셸 스크립트에서 if 문을 사용하는 기본적인 방법과 다양한 조건 비교 기법을 알아봅니다. if 문은 조건에 따라 다른 명령을 실행할 수 있게 해주는 중요한 프로그래밍 구조입니다.
☞ 포스트 기준: 리눅스 배포판 CentOS 7
1. if 문의 기본 구조
if 문은 다음과 같은 기본 구조를 가집니다.
if [ 조건 ]
then
# 명령
fi조건이 참일 경우 ‘명령’이 실행됩니다. 조건을 평가하기 위해 다양한 비교 연산자를 사용할 수 있습니다.
주의 사항
- 소문자 사용: if, then, else, elif, fi 등의 키워드는 모두 소문자로 작성해야 합니다.
- 조건문의 공백: 조건문 [ 조건 ]은 [와 ] 사이에 반드시 공백이 있어야 합니다. 조건 연산자 주변에도 공백이 필요합니다 (예: [ “$a” = “$b” ])
2. if-else 구조
if-else 구조를 사용하면 조건이 거짓일 때 다른 명령을 실행할 수 있습니다.
if [ 조건 ]
then
# 명령1
else
# 명령2
fi여기서 ‘조건’이 참이면 ‘명령1’이, 거짓이면 ‘명령2’가 실행됩니다.
3. if-elif-else 구조
복수의 조건을 평가하기 위해 if-elif-else 구조를 사용할 수 있습니다.
if [ 조건1 ]
then
# 명령1
elif [ 조건2 ]
then
# 명령2
else
# 명령3
fi이 구조는 여러 조건을 순차적으로 검사하며, 첫 번째로 참인 조건에 해당하는 명령을 실행합니다.
사용 예제
#!/bin/bash
num=10
if [ "$num" -eq 10 ]
then
echo "숫자는 10입니다."
elif [ "$num" -gt 10 ]
then
echo "숫자는 10보다 큽니다."
else
echo "숫자는 10보다 작습니다."
fi
exit 0이 스크립트는 변수 ‘num’의 값이 10인지, 10보다 큰지, 또는 10보다 작은지를 평가합니다. 각 조건에 따라 다른 메시지를 출력합니다.

4. 다양한 비교 방법
if 문에서 사용할 수 있는 다양한 비교 방법들은 스크립트의 유연성을 크게 향상시킵니다. 문자열 비교, 산술 비교, 파일 조건 등을 통해 다양한 조건을 평가할 수 있습니다.
1) 문자열 비교
| 연산자 | 설명 |
|---|---|
= | 두 문자열이 같은지 확인합니다. |
!= | 두 문자열이 다른지 확인합니다. |
-z | 문자열이 비어 있는지 확인합니다. |
-n | 문자열이 비어 있지 않은지 확인합니다. |
2) 산술 비교
| 연산자 | 설명 |
|---|---|
-eq | 두 숫자가 같은지 확인합니다. |
-ne | 두 숫자가 다른지 확인합니다. |
-gt | 첫 번째 숫자가 두 번째 숫자보다 큰지 확인합니다. |
-ge | 첫 번째 숫자가 두 번째 숫자보다 크거나 같은지 확인합니다. |
-lt | 첫 번째 숫자가 두 번째 숫자보다 작은지 확인합니다. |
-le | 첫 번째 숫자가 두 번째 숫자보다 작거나 같은지 확인합니다. |
3) 파일 조건
파일이나 디렉토리에 대한 다양한 조건을 확인할 수 있습니다.
| 연산자 | 설명 |
|---|---|
-f | 파일이 존재하고 일반 파일인지 확인합니다. |
-d | 디렉토리가 존재하는지 확인합니다. |
-r | 파일이 존재하고 읽을 수 있는지 확인합니다. |
-w | 파일이 존재하고 쓸 수 있는지 확인합니다. |
-x | 파일이 존재하고 실행할 수 있는지 확인합니다. |
-s | 파일이 존재하고 비어 있지 않은지 확인합니다. |
파일 조건 예제
다음 예제에서는 파일 조건을 사용하여 파일의 존재 여부와 특성을 확인합니다.
#!/bin/bash
filename="/path/to/file"
# 파일이 존재하는지 확인
if [ -f "$filename" ]; then
echo "$filename 파일이 존재합니다."
else
echo "$filename 파일이 존재하지 않습니다."
fi
# 파일이 읽기 가능한지 확인
if [ -r "$filename" ]; then
echo "$filename 파일은 읽기 가능합니다."
else
echo "$filename 파일은 읽기 불가능합니다."
fi
# 파일이 쓰기 가능한지 확인
if [ -w "$filename" ]; then
echo "$filename 파일은 쓰기 가능합니다."
else
echo "$filename 파일은 쓰기 불가능합니다."
fi
# 파일이 실행 가능한지 확인
if [ -x "$filename" ]; then
echo "$filename 파일은 실행 가능합니다."
else
echo "$filename 파일은 실행 불가능합니다."
fi
관련 이전 게시글
- 리눅스 명령어 도움말 및 매뉴얼 확인하기: –help, man, info
- 리눅스 chmod 명령어: 파일과 디렉토리의 접근 권한 설정하기
- 리눅스 whereis, which 명령어: 프로그램 위치 찾기
- 리눅스 grep 명령어: 파일 내에서 문자열 검색 및 패턴 찾기
- 리눅스 find 명령어: 파일 검색 및 고급 사용
다음 글에서도 셸 스크립트에 대해 알아볼 예정입니다. 도움이 되셨다면 공유해 주세요!



