Linux

[bash] 쉘 스크립트 조건문 사용법

lim 2021. 3. 20. 16:00
반응형

 

이전 글에서 쉘 스크립트로 사용자 입력을 받는 방법출력하는 방법에 대해서 다뤄보았다. 그렇다면 사용자의 입력에 따라 출력을 다르게 하고 싶을 때는 어떻게 해야할까? bash 쉘 스크립트에서는 다른 언어들과 마찬가지로 조건문에서는 if문을 제공한다. 그렇다면 if 조건문 문법에 대해서 살펴보자.

 


 

기본 구조

1
2
3
4
5
6
7
8
 
if [ expression ] ; then
  명령어
elif [ expression ] ; then
  명령어
else 
  명령어
fi
cs

bash 쉘 스크립트의 조건문 구조는 위와 같다. 

주의할 점은 조건과 '[' ']' 사이에는 공백이 있어야 한다.

그렇다면 조건은 어떻게 넣을 수 있을까?

bash 쉘 스크립트에서 expression에 사용할 수 있는 비교 방법은 아래와 같다. 

 

 

산술 비교

산술 비교는 두 변수의 크기를 비교하는 연산자다.

산술 비교 연산자

설명

var1 -eq var2

var1과 var2가 같은 경우 true를 반환함

var1 -ne var2

var1과 var2가 다른 경우 true를 반환함

var1 -gt var2

var1이 var2보다 큰 경우 true를 반환함

var1 -lt var2

var1이 var2보다 작은 경우 true를 반환함

var1 -ge var2

var1이 var2보다 크거나 같은 경우 true를 반환함

var1 -lt var2

var1이 var2보다 작거나 같은 경우 true를 반환함

 

산술 비교 연산자 예제

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
 
age=34
 
if [ $age -eq 31 ] ; then
  echo "Your age is ${age}"
elif [ $age -gt 31 ] ; then
  echo "Your age is greater than 31"
else 
  echo "Your age is less than 31"
fi
cs

age의 변수값과 31을 비교하는 예제다. 

age값이 31보다 크므로 해당 조건을 만족하는 $age -gt 31 부분이 참이 되면서 

Your age is greater than 31 을 출력한다.

 

 

문자열 비교

문자열 비교는 두 변수의 문자열을 비교하는 연산자다.

산술 비교 연산자

설명

var1 = var2

문자열 var1과 var2가 같은 경우 true를 반환함

var1 != var2

문자열 var1과 var2가 다른 경우 true를 반환함

-z var1

문자열 var1 길이가 0인 경우 true

-n var1

문자열 var1 길이가 0이 아닌 경우 true

var1

문자열 var1이 NULL이 아닌 경우 true를 반환함

 

문자열 비교 연산자 예제

1
2
3
4
5
6
7
8
9
#!/bin/bash
 
name="kevin"
 
if [ $name = "james" ] ; then
  echo "Your name is james"
else 
  echo "Your name is not james"
fi
cs

name 변수와 "james" 문자열을 비교하는 예제다. 

두 값이 다르므로 "Your name is not james"가 출력된다.

반응형