Skip to content

9. 비교 연산자(이진)


정수 비교 연산자는 다음과 같다.


연산자 사용법 설명
-eq if [ "$a" -eq "$b" ] 같음
-ne if [ "$a" -ne "$b" ] 같지 않음
-gt if [ "$a" -gt "$b" ]
-ge if [ "$a" -ge "$b" ] 크거나 같음
-lt if [ "$a" -lt "$b" ] 작음
-le if [ "$a" -le "$b" ] 작거나 같음
< if (( "$a" < "$b" )) 작음
<= if (( "$a" <= "$b" )) 작거나 같음
> if (( "$a" > "$b" ))
>= if (( "$a" >= "$b" )) 크거나 같음


문자열 비교 연산자는 다음과 같다.


연산자 사용법 설명
= if [["$a" = "$b"]] 같음
== if [["$a" == "$b"]] 같음
!= if [["$a" != "$b"]] 같지 않음
< if [ "$a" \< "$b" ], if [["$a" < "$b"]] 작음(아스키 순서)
> if [ "$a" \> "$b" ], if [["$a" > "$b"]] 큼(아스키 순서)
-z if [ -z "$a" ] 문자열의 길이가 0임(NULL)
-n if [ -n "$a" ] 문자열이 NULL이 아님


복합 비교 연산자는 다음과 같다.


연산자 사용법 설명
-a if [ "$exp1" -a "$exp2" ] 논리 AND
-o if [ "$exp1" -o "$exp2" ] 논리 OR
&& if [["$exp1" && "$exp2"]] 논리 AND
|| if [["$exp1" || "$exp2"]] 논리 OR


#!/bin/bash

# 이 시점에서는 "a"와 "b"는 정수나 문자열 양쪽 모두로 해석됨
a=4
b=5

# 휴먼 에러를 방지하고자 산술 비교는 문자형 연산자
if [ "$a" -ne "$b" ]; then
    echo "$a$b 는 같지 않습니다."
    echo "(산술 비교)"
fi
# 4 와 5 는 같지 않습니다.
# (산술 비교)

# 휴먼 에러를 방지하고자 문자열 비교는 산술형 연산자
if [ "$a" != "$b" ]; then
    echo "$a$b 와 같지 않습니다."
    echo "(문자열 비교)"
fi
# 4 는 5 와 같지 않습니다.
# (문자열 비교)

exit 0
#!/bin/bash

# $string1은 아직 선언되지 않음
if [ -n $string1 ]; then
    echo "\"string1\"은 널이 아닙니다."
else
    echo "String \"string1\"은 널입니다."
fi
# "string1"은 널이 아닙니다.

# $string1을 쿼우트 함
if [ -n "$string1" ]; then
    echo "\"string1\"은 널이 아닙니다."
else
    echo "String \"string1\"은 널입니다."
fi
# String "string1"은 널입니다.

exit 0

References