리눅스 셸 스크립트: if 문 사용법과 다양한 비교 방법

리눅스 셸 스크립트: if 문 사용법과 다양한 비교 방법

이 글에서는 리눅스 셸 스크립트에서 if 문을 사용하는 기본적인 방법과 다양한 조건 비교 기법을 알아봅니다. if 문은 조건에 따라 다른 명령을 실행할 수 있게 해주는 중요한 프로그래밍 구조입니다.

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보다 작은지를 평가합니다. 각 조건에 따라 다른 메시지를 출력합니다.

리눅스 if-elif-else 사용 예제

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
리눅스 if 파일 조건 사용 예시

관련 이전 게시글

위로 스크롤