본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
리눅스 쉘 스크립트 레벨업! 💪 변수와 조건문으로 똑똑하게 만들기

안녕하세요! 리눅스 탐험가 여러분! 😎
어제는 쉘 스크립트의 기본 중의 기본! 파일을 만들고 실행 권한을 주고, 간단한 명령어를 실행하는 법을 알아봤었죠? 다들 echo "Hello World!" 정도는 멋지게 성공하셨으리라 믿습니다! 😉
오늘은 어제보다 한 단계 더 나아가서, 여러분의 쉘 스크립트를 훨씬 더 유연하고 똑똑하게 만들어 줄 두 가지 핵심 무기, 바로 변수(Variables) 와 조건문(Conditional Statements) 에 대해 알아볼 거예요. 준비되셨나요? 출발! 🚀

1. 변수: 데이터를 담는 나만의 상자 📦
스크립트를 짜다 보면 어떤 값(텍스트나 숫자 등)을 임시로 저장해두고 나중에 다시 사용해야 할 때가 많아요. 이때 사용하는 것이 바로 변수입니다! 변수는 마치 데이터를 잠시 담아두는 이름표 붙은 상자라고 생각하면 쉬워요.
선언하고 사용하기:
쉘 스크립트에서 변수를 만드는 건 아주 간단해요. = 기호를 사용해서 변수 이름에 값을 할당해주면 됩니다.
# 변수 선언 (주의! = 양 옆에 공백이 있으면 안 돼요!)
MY_NAME="리눅스마스터"
USER_COUNT=100
# 변수 사용 (변수 이름 앞에 $ 기호를 붙여요!)
echo "안녕하세요, 제 이름은 $MY_NAME 입니다."
echo "현재 접속자 수는 ${USER_COUNT}명 입니다." # 중괄호로 감싸면 더 명확해요!
핵심 포인트:
- 변수 이름은 보통 대문자로 짓는 것이 관례입니다. (필수는 아니에요!)
- 변수를 선언할 때 = 기호 양 옆에는 공백이 없어야 합니다. (NAME = "값" (X), NAME="값" (O))
- 변수의 값을 사용할 때는 변수 이름 앞에 $ 기호를 붙여줍니다.
- 변수 이름 뒤에 다른 문자가 바로 붙는 경우 등, 경계를 명확히 하려면 ${변수이름} 형태로 사용하는 것이 좋습니다.
이제 여러분의 스크립트에서 반복적으로 사용되는 값이나, 사용자로부터 입력받은 값 등을 변수에 저장해서 활용해보세요! 훨씬 깔끔하고 관리하기 쉬워질 거예요.

2. 조건문: 상황에 따라 다르게 행동하기 🤔
스크립트가 항상 똑같은 일만 반복한다면 조금 심심하겠죠? 때로는 "만약 ~라면 이렇게 하고, 아니라면 저렇게 해!" 와 같이 특정 조건에 따라 다른 명령을 실행해야 할 때가 있습니다. 이럴 때 사용하는 것이 바로 조건문, 대표적으로 if 문입니다.
기본 구조:
if [ 조건식 ]; then
# 조건이 참(True)일 때 실행할 명령어들
echo "조건을 만족했습니다!"
elif [ 다른_조건식 ]; then
# 위의 조건은 거짓이고, 다른_조건식이 참일 때 실행할 명령어들
echo "다른 조건을 만족했네요!"
else
# 위의 모든 조건이 거짓(False)일 때 실행할 명령어들
echo "어떤 조건도 만족하지 못했습니다."
fi # if문의 끝을 알리는 표시! 꼭 필요해요!
핵심 포인트:
- if 로 시작해서 fi 로 끝납니다. (if를 거꾸로 쓴 모양이죠? 😄)
- 조건식은 [ ] 대괄호 안에 작성하며, 대괄호 안쪽과 조건식 사이에는 반드시 공백이 필요합니다! ([조건] (X), [ 조건 ] (O))
- then 키워드 뒤에는 조건이 참일 때 실행할 명령어를 적습니다.
- elif 는 'else if'의 줄임말로, 여러 조건을 체크하고 싶을 때 사용합니다. (선택 사항)
- else 는 위의 if 나 elif 조건이 모두 거짓일 때 실행됩니다. (선택 사항)
자주 사용되는 조건식 예시:
- 숫자 비교:
- -eq: 같다 (equal)
- -ne: 같지 않다 (not equal)
- -gt: 크다 (greater than)
- -lt: 작다 (less than)
- -ge: 크거나 같다 (greater or equal)
- -le: 작거나 같다 (less or equal)
- 예시: if [ $COUNT -eq 10 ]; then ... (COUNT 변수가 10과 같다면)
- 문자열 비교:
- =: 같다
- !=: 같지 않다
- -z: 문자열 길이가 0이면 참 (zero)
- -n: 문자열 길이가 0이 아니면 참 (non-zero)
- 예시: if [ "$NAME" = "펭수" ]; then ... (NAME 변수가 "펭수"와 같다면)
- 예시: if [ -z "$INPUT" ]; then echo "입력값이 없습니다!"; fi (INPUT 변수가 비어있다면)
- 파일/디렉토리 관련:
- -e: 파일/디렉토리가 존재하면 참 (exist)
- -f: 일반 파일이면 참 (file)
- -d: 디렉토리이면 참 (directory)
- 예시: if [ -f "myfile.txt" ]; then ... (myfile.txt 파일이 존재하고 일반 파일이라면)
간단 예제:
#!/bin/bash
echo "나이를 입력해주세요:"
read age # 사용자 입력을 age 변수에 저장
if [ "$age" -lt 20 ]; then
echo "미성년자입니다."
elif [ "$age" -ge 20 ] && [ "$age" -lt 65 ]; then # &&는 AND 조건
echo "성인입니다."
else
echo "어르신입니다."
fi
이 스크립트는 사용자에게 나이를 입력받아 age 변수에 저장한 뒤, if 와 elif, else 를 사용해서 나이에 따라 다른 메시지를 출력해줍니다. 훨씬 똑똑해 보이지 않나요? 😎
자, 오늘은 쉘 스크립트를 한 단계 업그레이드 시켜주는 변수와 조건문에 대해 알아봤습니다! 처음에는 조금 낯설 수 있지만, 직접 예제를 따라 해보고 이것저것 수정해보면서 익숙해지는 것이 중요해요. 변수로 데이터를 저장하고, 조건문으로 상황에 맞게 스크립트의 흐름을 제어해보세요. 여러분의 리눅스 활용 능력이 쑥쑥 성장하는 것을 느낄 수 있을 겁니다! 👍

벌써 한 주가 마무리되어 가네요. 저는 내일부터 신나는 주말이라 벌써부터 기분이 좋습니다! 😄 코딩 공부도 좋지만, 주말에는 푹 쉬면서 재충전하는 시간도 꼭 가지시길 바라요!
여러분도 오늘 하루 마무리 잘 하시고, 편안한 밤, 굿밤 보내시길 바랍니다! 🌙 다음에 더 유익한 내용으로 만나요! 👋
'데이터 엔지니어링' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 20일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.20 |
|---|---|
| 패스트캠퍼스 환급챌린지 19일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.19 |
| 패스트캠퍼스 환급챌린지 17일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.17 |
| 패스트캠퍼스 환급챌린지 16일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.16 |
| 패스트캠퍼스 환급챌린지 15일차: 데이터엔지니어링 초격차 강의 후기 (1) | 2025.04.15 |