데이터 엔지니어링

패스트캠퍼스 환급챌린지 18일차: 데이터엔지니어링 초격차 강의 후기

Big Byte 2025. 4. 18. 23:51

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

리눅스 쉘 스크립트 레벨업! 💪 변수와 조건문으로 똑똑하게 만들기

안녕하세요! 리눅스 탐험가 여러분! 😎

어제는 쉘 스크립트의 기본 중의 기본! 파일을 만들고 실행 권한을 주고, 간단한 명령어를 실행하는 법을 알아봤었죠? 다들 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 는 위의 ifelif 조건이 모두 거짓일 때 실행됩니다. (선택 사항)

자주 사용되는 조건식 예시:

  • 숫자 비교:
    • -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 변수에 저장한 뒤, ifelif, else 를 사용해서 나이에 따라 다른 메시지를 출력해줍니다. 훨씬 똑똑해 보이지 않나요? 😎


자, 오늘은 쉘 스크립트를 한 단계 업그레이드 시켜주는 변수와 조건문에 대해 알아봤습니다! 처음에는 조금 낯설 수 있지만, 직접 예제를 따라 해보고 이것저것 수정해보면서 익숙해지는 것이 중요해요. 변수로 데이터를 저장하고, 조건문으로 상황에 맞게 스크립트의 흐름을 제어해보세요. 여러분의 리눅스 활용 능력이 쑥쑥 성장하는 것을 느낄 수 있을 겁니다! 👍

 

 

벌써 한 주가 마무리되어 가네요. 저는 내일부터 신나는 주말이라 벌써부터 기분이 좋습니다! 😄 코딩 공부도 좋지만, 주말에는 푹 쉬면서 재충전하는 시간도 꼭 가지시길 바라요!

여러분도 오늘 하루 마무리 잘 하시고, 편안한 밤, 굿밤 보내시길 바랍니다! 🌙 다음에 더 유익한 내용으로 만나요! 👋

 

https://abit.ly/lisbva