Exp/Linux

[Linux] 쉘스크립트로 If문을 만들어보자

kilog 2024. 4. 23. 12:45
728x90

안녕하세요 ki입니다.

이번 Exp는 쉘스크립트에 If문입니다.

개발에서 없어서는 안 될 If문을 쉘스크립트로 사용하는 법을 공유하려고 합니다.ㅎㅎ

 

if [ 조건 ]; then
    # 조건이 참일 때 실행할 명령어들
elif [ 다른조건 ]; then
    # 다른 조건이 참일 때 실행할 명령어들
else
    # 위의 모든 조건이 거짓일 때 실행할 명령어들
fi

 

저희가 알고 있는 If문처럼 [대괄호] 안에 조건을 작성하고 true일 경우 then 아래에 있는 명령어들이 실행되고, false인 경우에는 else 아래에 있는 명령어들이 실행됩니다. elif는 저희가 알고 있는 else if를 뜻하고 동일하게 then 아래에 있는 명령어들이 실행됩니다.

 

 

쉘스크립트에서도 비교 연산자들이 존재합니다.

-eq: 두 값이 같은지 여부를 확인합니다.
-ne: 두 값이 다른지 여부를 확인합니다.
-lt: 왼쪽 값이 오른쪽 값보다 작은지 여부를 확인합니다.
-gt: 왼쪽 값이 오른쪽 값보다 큰지 여부를 확인합니다.
-le: 왼쪽 값이 오른쪽 값보다 작거나 같은지 여부를 확인합니다.
-ge: 왼쪽 값이 오른쪽 값보다 크거나 같은지 여부를 확인합니다.
-z: 문자열의 길이가 0인지 여부를 확인합니다.
-n: 문자열의 길이가 0보다 큰지 여부를 확인합니다.

 

제가 느끼기에는 jstl에 연산자와 비슷하게 느껴지는데 예시를 보여드리겠습니다.

num=15

if [ $num -gt 10 ]; then
    echo "$num은 10보다 큽니다."
else
    echo "$num은 10보다 작거나 같습니다."
fi


# num이 10보다 큰 경우 "15는 10보다 큽니다."를 출력하고, 
# 그렇지 않은 경우 "15는 10보다 작거나 같습니다."를 출력합니다.



# num이 0보다 큰지 확인
if [ $num -gt 0 ]; then
    echo "입력한 숫자 $num 은(는) 양수입니다."
# num이 0과 같은지 확인
elif [ $num -eq 0 ]; then
    echo "입력한 숫자 $num 은(는) 0입니다."
# num이 0보다 작은지 확인
else
    echo "입력한 숫자 $num 은(는) 음수입니다."
fi


# 입력한 숫자가 양수일 경우 "양수입니다."
# 0일 경우 "0입니다." 
# 음수일 경우 "음수입니다."가 출력됩니다.

 

저는 if문 안에 if문을 넣어 다중 조건을 걸 때  아래 오류를 본 적이 있습니다.

[: missing `]'

이 에러는 쉘 스크립트나 명령어에서 조건문을 사용할 때 발생할 수 있습니다. 주로 대괄호 [를 사용하여 조건을 테스트할 때 발생합니다. 대괄호는 조건 테스트의 시작과 끝을 나타내는데, 시작 대괄호 [와 종료 대괄호 ]`가 정확하게 짝을 이루어야 합니다.

 

저는 다중 조건을 입력시 ||와 &&를 이용했는데 위에 missing 오류가 발생했습니다....

그래서 or문과 and문은 리눅스에서 -o는 or  -a는 and로 표현합니다. 

if ["조건1" || "조건2"]
# 오류 발생

if ["조건1" -o "조건2"]
# or 문

if ["조건1" -a "조건2"]
# and 문