Bash Shell Script - 조건문(if-else)

By JS | Last updated: October 01, 2021

Linux의 Bash 쉘 스크립트에서 조건문 사용 방법에 대해서 알아보겠습니다.

1. Syntax

Syntax는 다음과 같습니다. 다른 언어들의 조건문과 동일하게 if, if-else, if-elif-else 패턴과 같이 사용할 수 있습니다.

if [ expression ]
then
    statement
elif [ expression ]
then
    statement
else
    statement
fi

2. Example: if-else

다음은 if-else를 사용하는 예제입니다. $a = $b는 a와 b가 같을 때 True, 다를 때 False가 됩니다.

#!/bin/bash

a=10
b=20

if [ $a = $b ]
then
    echo "a is equal to b"
else
    echo "a is not equal to b"
fi

Output:

$ bash example.sh
a is not equal to b

3. 테스트 연산자

테스트 연산자는 두개의 변수를 비교하거나, 파일의 유형이나 권한을 검사하는 연산자입니다.

if [ statement ]에서 테스트 연산자를 이용하여 조건식을 만들 수 있습니다.

다음과 같은 테스트 연산자들이 있고, 의미는 아래와 같습니다.

Operator Description Value
! EXPRESSION The EXPRESSION is false.
-n STRING The length of STRING is greater than zero.
-z STRING The lengh of STRING is zero (ie it is empty).
STRING1 = STRING2 STRING1 is equal to STRING2
STRING1 != STRING2 STRING1 is not equal to STRING2
INTEGER1 -eq INTEGER2 INTEGER1 is numerically equal to INTEGER2
INTEGER1 -gt INTEGER2 INTEGER1 is numerically greater than INTEGER2
INTEGER1 -lt INTEGER2 INTEGER1 is numerically less than INTEGER2
-d FILE FILE exists and is a directory.
-e FILE FILE exists.
-r FILE FILE exists and the read permission is granted.
-s FILE FILE exists and it's size is greater than zero (ie. it is not empty).
-w FILE FILE exists and the write permission is granted.
-x FILE FILE exists and the execute permission is granted.

4. Example: if-elif-else

다음은 if-elif-else를 사용하는 예제입니다. [ $a -lt $b ]a < b의 의미입니다.

#!/bin/bash

a=10
b=20

if [ $a = $b ]
then
    echo "a is equal to b"
elif [ $a -lt $b ]
then
    echo "a is less than b"
else
    echo "a is not equal to b"
fi

Output:

$ bash example.sh
a is less than b

5. Example: if not..

[ expression ]에 not을 적용하려면, ! [ expression ] 또는 [ ! expression ]처럼 표현식에 !를 붙이면 됩니다.

#!/bin/bash

a=10
b=20

if ! [ $a = $b ]
then
    echo "a is not equal to b"
else
    echo "a is equal to b"
fi

Output:

a is not equal to b

6. OR 또는 AND 연산자

두개의 조건에 OR 또는 AND 연산자를 적용할 수 있습니다.

AND 연산자는 [ expression ] && [ expression ]와 같이 사용할 수 있습니다.

#!/bin/bash

a=10
b=20

if [ $a = 10 ] && [ $b = 20 ]
then
    echo "a is 10 and b is 20"
fi

Output:

a is 10 and b is 20

OR 연산자는 [ expression ] || [ expression ]와 같이 같이 사용할 수 있습니다.

#!/bin/bash

a=10
b=20

if [ $a = 10 ] || [ $b = 10 ]
then
    echo "a is 10 or b is 10"
fi

Output:

a is 10 or b is 10

References

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha