[Shell Script] if와 case 조건문
February 24, 2024
Shell Script의 if문과 case문의 사용 방법에 대해서 알아보겠습니다.
이 글의 예제들은 Ubuntu 20.04에서 Bash shell을 사용하여 작성되었습니다.
1. if문
if문은 어떤 조건을 체크하여, 조건에 일치하면 특정 구문을 수행하고 그렇지 않으면 다른 동작을 하는데 사용됩니다.
아래 예제는 value
가 10일 때와 아닐 때 조건을 체크하여 다른 텍스트를 출력합니다.
if [ $value -eq 10 ]; then
에서 조건은$value -eq 10
입니다.$value -eq 10
에서-eq
는 “is equal to”의 의미로,$value
가 10과 같으면 true, 그렇지 않으면 false가 리턴됩니다.
#!/bin/bash
value=10
if [ $value -eq 10 ]; then
echo "값은 10입니다."
else
echo "값은 10이 아닙니다."
fi
Output:
$ bash example.sh
값은 10입니다.
조건 연산자
-eq
외에, 아래와 같이 다양한 조건 연산자들이 있습니다.
Int 비교 연산자 | 의미 | 예제 |
---|---|---|
-eq | is equal to | if [ “$a” -eq “$b” ] |
-ne | is not equal to | if [ “$a” -ne “$b” ] |
-gt | is greater than | if [ “$a” -gt “$b” ] |
-ge | is greater than or equal to | if [ “$a” -ge “$b” ] |
-lt | is less than | if [ “$a” -lt “$b” ] |
-le | is less than or equal to | if [ “$a” -le “$b” ] |
< | is less than | ((“$a” < “$b”)) |
<= | is less than or equal to | ((“$a” <= “$b”)) |
> | is greater than | ((“$a” > “$b”)) |
>= | is greater than or equal to | ((“$a” >= “$b”)) |
if-elif-else
if-elif-else
는 아래와 같이 동작합니다.
- if의 조건이 일치할 때 if문 수행
- if의 조건이 일치하지 않을 때 elif의 조건 확인
- elif의 조건이 일치하지 않으면 else의 구문 수행
아래 예제는 if문에 -eq
와 -lt
조건 연산자를 사용합니다.
#!/bin/bash
num1=10
num2=20
if [ $num1 -eq $num2 ]; then
echo "두 숫자는 같습니다."
elif [ $num1 -lt $num2 ]; then
echo "num1은 num2보다 작습니다."
else
echo "num1은 num2보다 큽니다."
fi
Output:
$ bash example.sh
num1은 num2보다 작습니다.
2. case문
case문은 아래와 같은 포맷으로 사용할 수 있습니다.
case $fruit in
: 케이스에서$fruit
의 값과 일치하는 조건이 있는지 확인"apple")
: fruit이"apple"
일 때 이 조건의 구문 실행*)
: 일치하는 조건이 없을 때, 이 구문 실행 (default)
#!/bin/bash
fruit="apple"
case $fruit in
"apple")
echo "사과입니다."
;;
"banana")
echo "바나나입니다."
;;
"orange")
echo "오렌지입니다."
;;
*)
echo "알 수 없는 과일입니다."
;;
esac
Output:
$ bash example.sh
사과입니다.
다른 예제
다른 예제로, 파일의 확장자에 따라서 다른 처리를 하는 코드입니다.
문자열을 비교할 때 정규식처럼 *
를 사용하여 파일 이름은 비교하지 않고 확장자만 비교하고 있습니다.
#!/bin/bash
filename="document.docx"
case "$filename" in
*.txt)
echo "텍스트 파일입니다."
;;
*.docx)
echo "워드 문서 파일입니다."
;;
*.pdf)
echo "PDF 파일입니다."
;;
*)
echo "알 수 없는 파일 형식입니다."
;;
esac