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 사용
이 규칙만 지켜도 문자열 비교에서 발생하는 대부분의 오류를 피할 수 있습니다.
'개발 환경 및 프로젝트 관리 > Linux 개념' 카테고리의 다른 글
| Bash의 Logical AND / OR (논리 연산자) (0) | 2025.10.08 |
|---|---|
| Bash에서 파일 테스트 연산자 (File Test Operators) (0) | 2025.10.08 |
| Bash 스크립트에서 if문과 정수 비교 (0) | 2025.10.08 |
| 리눅스 파일 권한 변경 명령어: chmod 정리 (0) | 2025.10.07 |
| 리눅스 쉘 변수 기본 정리 (0) | 2025.10.07 |