Computer >> 컴퓨터 >  >> 시스템 >> Linux

Bash 스크립트에서 IF 문 작성하는 방법 완벽 정리

조건문의 한 종류인 if 문을 사용하면 지정된 조건에 따라 서로 다른 동작을 수행할 수 있습니다. 이는 시스템이 스스로 상황을 판단하고 결정을 내릴 수 있는 능력을 부여하는 것과 같아, Bash 스크립트 작성에서 핵심적인 요소입니다.

가장 기본적인 IF 문 형태

다음은 if 문의 가장 간단한 형태를 보여주는 예제입니다.

count=5
if [ $count == 5 ]
then
echo "$count"
fi

이 예제에서 변수 countif 문에서 조건으로 사용됩니다. if 문이 실행되기 전에 변수 count에 값 5가 할당되고, 이후 if 문은 count의 값이 5인지 검사합니다. 조건이 참이면 thenfi 키워드 사이의 명령문이 실행되고, 그렇지 않으면 if 문 다음에 오는 명령문들이 그대로 실행됩니다.

fi 키워드는 if를 거꾸로 쓴 것입니다. Bash 스크립트 언어는 if 문이나 case 문처럼 복잡한 표현식의 끝을 표시하기 위해 이러한 규칙을 사용합니다.

echo 문은 인자로 받은 값을 터미널 창에 출력합니다. 여기서는 변수 count의 값이 화면에 표시됩니다. 참고로 if 문 키워드 사이의 코드를 들여쓰기하면 가독성이 크게 향상되지만, 문법적으로 필수 사항은 아닙니다.

else 키워드로 조건이 거짓일 때 처리하기

특정 코드가 조건이 참이 '아닐' 때만 실행되어야 하는 상황이라면 else 키워드를 사용하면 됩니다.

count=5
if [ $count == 5 ]
then
echo "$count"
else
echo "count is not 5"
fi

위 예제에서 조건 $count == 5가 참이면 변수 count의 값이 출력되고, 조건이 거짓이면 문자열 "count is not 5"가 대신 출력됩니다.

elif 키워드로 여러 조건 구분하기

두 개 이상의 조건을 구분해 처리해야 할 때는 else if에서 파생된 elif 키워드를 사용합니다.

if [ $count == 5 ]
then
echo "count is five"
elif [ $count == 6 ]
then
echo "count is six"
else
echo "none of the above"
fi

count5이면 "count is five"가 출력되고, 5가 아니지만 6이면 "count is six"가 출력됩니다. 둘 다 아니라면 "none of the above"가 출력됩니다.

elif 절은 필요한 만큼 몇 개든 추가할 수 있습니다. 여러 개의 elif 조건을 사용한 예는 다음과 같습니다.

if [ $count == 5 ]
then
echo "count is five"
elif [ $count == 6 ]
then
echo "count is six"
elif [ $count == 7 ]
then
echo "count is seven"
elif [ $count == 8 ]
then
echo "count is eight"
elif [ $count == 9 ]
then
echo "count is nine"
else
echo "none of the above"
fi

case 문으로 더 간결하게 작성하기

여러 조건을 다루는 이런 코드는 case 문으로 작성하면 훨씬 간결해집니다. case 문은 여러 개의 elif 절을 가진 if 문과 유사하게 동작하지만 구조가 더 깔끔합니다. 위의 코드는 case 문으로 다음과 같이 다시 작성할 수 있습니다.

case "$count" in
5)
echo "count is five"
;;
6)
echo "count is six"
;;
7)
echo "count is seven"
;;
8)
echo "count is eight"
;;
9)
echo "count is nine"
;;
*)
echo "none of the above"
esac

반복문 안에서 IF 문 활용하기

if 문은 for 루프나 while 루프 내부에서 자주 사용됩니다. 다음 예제를 살펴보겠습니다.

count=1
done=0
while [ $count -le 9 ]
do
sleep 1
(( count++ ))
if [ $count == 5 ]
then
continue
fi
echo "$count"
done
echo Finished

이 스크립트는 카운터가 5가 되는 순간 continue 문으로 해당 반복을 건너뛰고 나머지 숫자만 출력합니다.

중첩 IF 문

if 문은 중첩해서 사용할 수도 있습니다. 가장 단순한 중첩 if 문의 형태는 if...then...else...if...then...fi...fi이며, 필요에 따라 임의의 복잡도로 중첩 구조를 만들 수 있습니다.

마무리 및 확장 학습

Bash 셸은 for 루프, while 루프, 산술 표현식 등 다양한 프로그래밍 구조를 제공합니다. 나아가 명령줄에서 전달된 매개변수를 조건문으로 처리하는 방법처럼 Bash 스크립트에 인자를 전달하는 기법도 함께 익혀두면 실무에서 훨씬 유용하게 활용할 수 있습니다.