개발 환경 및 프로젝트 관리/Linux 개념

Bash에서 문자열 비교 (String Comparison)

Data Jun 2025. 10. 8. 09:58

Bash 스크립트에서는 숫자뿐 아니라 문자열(텍스트)도 비교할 수 있습니다.
이번 글에서는 문자열 비교 연산자NULL/빈 문자열 판별 방법을 정리해보겠습니다.

 

문자열 비교 기본 연산자

Bash에서는 문자열 비교 시 다음과 같은 연산자를 사용합니다.

연산자 의미
= 두 문자열이 같을 때 (equal to)
== 두 문자열이 같을 때 (bash 확장 문법)
!= 두 문자열이 다를 때 (not equal to)

 

주의: 변수 비교 시 반드시 따옴표(quoting) 하기

 

변수에 공백이나 빈 문자열이 들어 있을 수 있기 때문에,
항상 "$var" 형태로 비교해야 합니다.

str="hello"

if [ "$str" = "hello" ]; then
    echo "같은 문자열입니다."
fi

❌ 잘못된 예시
[ $str = hello ] → 변수가 비어있을 경우 syntax error 발생

 

문자열의 크기 비교

문자열 간의 크기 비교도 가능합니다.
이는 알파벳 순서(lexicographical order) 기준으로 판단되며,
Locale 설정에 따라 결과가 달라질 수도 있습니다.

연산자 의미
< 왼쪽 문자열이 오른쪽보다 작다
> 왼쪽 문자열이 오른쪽보다 크

사용 시 주의

  • [ ] 구문에서는 <, > 앞에 **백슬래시(\)**를 붙여야 합니다.
  • [[ ]] 구문에서는 백슬래시 없이 그대로 사용 가능합니다.
# [ ] 방식
if [ "$a" \< "$b" ]; then
    echo "$a 가 $b 보다 작습니다."
fi

# [[ ]] 방식 (bash 확장)
if [[ "$a" < "$b" ]]; then
    echo "$a 가 $b 보다 작습니다."
fi

 

 

NULL(빈 문자열) 비교

문자열이 비어 있는지 확인할 때는 -z와 -n 옵션을 사용합니다.

연산자 의미
-z 문자열이 NULL(빈 문자열) 인지 확인
-n 문자열이 NULL이 아닌지 확인

예시

name=""

if [ -z "$name" ]; then
    echo "name이 비어 있습니다."
fi

if [ -n "$name" ]; then
    echo "name이 존재합니다."
fi

참고

  • 설정되지 않은 변수(undeclared variable)도 NULL로 판단됩니다.
  • "" (빈 문자열) 또한 NULL로 취급됩니다.

 

 

정리하자면, Bash에서 문자열 비교 시에는 다음 세 가지를 꼭 기억하세요 👇

 

1. 변수는 항상 따옴표로 감싸기 ("$var")

2. <, > 비교 시 [ ] 안에서는 \ 필요
3. 빈 문자열 확인에는 -z, -n 사용

 

이 규칙만 지켜도 문자열 비교에서 발생하는 대부분의 오류를 피할 수 있습니다.