패스트캠퍼스 환급챌린지 19일차: 데이터엔지니어링 초격차 강의 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
리눅스 셸 스크립트 실습 (2): 숫자놀음과 무한반복 탈출! (기본 연산자와 반복문)

안녕하세요! 지난 [리눅스 셸 스크립트 실습 (1) - 기초 다지기] 편에 이어 다시 돌아왔습니다! 👋 지난 시간에는 변수 선언하고, 기본적인 명령어들을 스크립트 안에서 어떻게 사용하는지 맛보기를 했었죠?
오늘은 여기서 한 발짝 더 나아가, 셸 스크립트를 훨씬 더 강력하고 유용하게 만들어 줄 두 가지 핵심 요소, 기본 연산자와 반복문에 대해 알아보겠습니다.
오늘 내용을 잘 따라오시면, 단순한 명령어 나열을 넘어 계산도 하고, 귀찮은 반복 작업도 똑똑하게 처리하는 스크립트를 만드실 수 있을 거예요! 자, 그럼 오늘도 신나게 실습을 시작해 볼까요? 😊

1. 셸 스크립트에서 계산하기: 기본 연산자 (+, -, *, /, %)
스크립트를 짜다 보면 숫자를 다뤄야 할 때가 생각보다 많습니다. 파일 개수를 세거나, 특정 조건에 따라 값을 더하거나 빼는 등 계산이 필요한 순간들이 있죠. 셸 스크립트에서는 어떻게 숫자를 계산할 수 있을까요?
가장 기본적인 방법 몇 가지를 알아봅시다.
방법 1: expr 명령어 사용하기
expr은 "expression"의 약자로, 간단한 정수 연산을 수행할 수 있게 해줍니다.
#!/bin/bash
num1=10
num2=5
# 덧셈
sum_result=$(expr $num1 + $num2)
echo "덧셈 결과: $sum_result"
# 뺄셈
sub_result=$(expr $num1 - $num2)
echo "뺄셈 결과: $sub_result"
# 곱셈 (주의! '*'는 특수문자이므로 '\'와 함께 사용)
mul_result=$(expr $num1 \* $num2)
echo "곱셈 결과: $mul_result"
# 나눗셈 (정수 나눗셈, 소수점 이하는 버림)
div_result=$(expr $num1 / $num2)
echo "나눗셈 결과: $div_result"
# 나머지
mod_result=$(expr $num1 % $num2)
echo "나머지 결과: $mod_result"
실행 결과:
덧셈 결과: 15
뺄셈 결과: 5
곱셈 결과: 50
나눗셈 결과: 2
나머지 결과: 0
✨ 중요 포인트: expr을 사용할 때는 각 숫자와 연산자 사이에 반드시 공백이 있어야 합니다! 그리고 곱셈 기호 *는 와일드카드로 인식될 수 있어서 앞에 \를 붙여줘야 하는 점 잊지 마세요!

방법 2: $(( )) 사용하기 (추천!)
요즘에는 expr보다 더 간편하고 직관적인 $(( )) 형식을 더 많이 사용합니다. 이 방식은 변수 앞에 $를 붙이지 않아도 되고, 곱셈 기호 *도 그대로 사용할 수 있어 편리합니다.
#!/bin/bash
num1=20
num2=7
# 덧셈
sum_result=$((num1 + num2))
echo "덧셈 결과: $sum_result"
# 뺄셈
sub_result=$((num1 - num2))
echo "뺄셈 결과: $sub_result"
# 곱셈
mul_result=$((num1 * num2))
echo "곱셈 결과: $mul_result"
# 나눗셈 (정수 나눗셈)
div_result=$((num1 / num2))
echo "나눗셈 결과: $div_result"
# 나머지
mod_result=$((num1 % num2))
echo "나머지 결과: $mod_result"
실행 결과:
덧셈 결과: 27
뺄셈 결과: 13
곱셈 결과: 140
나눗셈 결과: 2
나머지 결과: 6
어때요? 훨씬 깔끔하죠? 앞으로는 가급적 $(( ))를 사용하는 것을 추천합니다!
(참고) let 이라는 명령어도 있지만, $(( ))가 더 널리 쓰이고 가독성도 좋습니다.
2. 지루한 작업은 컴퓨터에게! 반복문 (for, while)
똑같은 (또는 비슷한) 작업을 여러 번 반복해야 할 때, 우리는 반복문을 사용합니다. 예를 들어, 여러 개의 파일을 순서대로 처리하거나, 특정 조건이 만족될 때까지 어떤 작업을 계속해야 할 때 아주 유용하죠.
2.1 for 반복문: 정해진 횟수만큼 반복하기
for 반복문은 주로 미리 정해진 목록이나 범위 내에서 각 항목에 대해 동일한 작업을 반복할 때 사용합니다.
기본 구조:
for 변수 in 목록
do
# 반복할 명령어들
done
예제 1: 목록 순회
#!/bin/bash
echo "좋아하는 과일 목록:"
for fruit in apple banana orange grape
do
echo "- $fruit"
done
실행 결과:
좋아하는 과일 목록:
- apple
- banana
- orange
- grape
fruit이라는 변수에 apple, banana, orange, grape가 차례대로 할당되면서 echo 명령어가 반복 실행됩니다.
예제 2: 숫자 범위 반복 (C 스타일)
C 언어 스타일의 for 반복문도 사용할 수 있습니다. 특히 숫자를 이용한 반복에 편리합니다.
#!/bin/bash
echo "1부터 5까지 숫자 출력:"
for (( i=1; i<=5; i++ ))
do
echo "현재 숫자: $i"
done
실행 결과:
1부터 5까지 숫자 출력:
현재 숫자: 1
현재 숫자: 2
현재 숫자: 3
현재 숫자: 4
현재 숫자: 5
(( )) 안에 초기값 (i=1), 조건 (i<=5), 증가/감소 (i++)를 지정하여 반복 횟수를 제어합니다.
2.2 while 반복문: 조건이 참인 동안 계속 반복하기
while 반복문은 특정 조건이 참(True)인 동안 명령어를 계속 반복 실행합니다. 반복 횟수가 미리 정해져 있지 않고, 어떤 상황이 될 때까지 계속해야 할 때 유용합니다.
기본 구조:
while [ 조건 ]
do
# 반복할 명령어들
# (중요!) 조건을 변경하는 로직이 필요할 수 있음 (무한 루프 방지)
done
예제: 카운터 만들기
#!/bin/bash
counter=1
while [ $counter -le 5 ] # counter가 5보다 작거나 같은 동안 반복
do
echo "현재 카운트: $counter"
# counter 값을 1 증가시킴 (이 부분이 없으면 무한 루프!)
counter=$((counter + 1))
done
echo "반복문 종료!"
실행 결과:
현재 카운트: 1
현재 카운트: 2
현재 카운트: 3
현재 카운트: 4
현재 카운트: 5
반복문 종료!
[ $counter -le 5 ] 부분이 바로 조건입니다. -le는 "less than or equal to" (작거나 같다)를 의미하는 테스트 연산자입니다. while문 안에서 counter 값을 계속 1씩 증가시켜서, 언젠가는 조건($counter -le 5)이 거짓(False)이 되어 반복문을 빠져나오게 됩니다.
만약 counter 값을 변경하는 부분이 없다면 counter는 영원히 1이고, 조건은 계속 참이 되어 무한 루프에 빠지게 되니 주의해야 합니다!
와! 오늘 정말 많은 것을 배웠네요! 🤓 기본 연산자를 이용해서 셸 스크립트 안에서 계산하는 방법부터, for문과 while문을 사용해서 반복 작업을 자동화하는 방법까지! 이 두 가지만 잘 활용해도 여러분의 셸 스크립트 활용 능력이 한 단계 업그레이드될 겁니다.
처음에는 조금 낯설 수 있지만, 직접 예제 코드를 입력하고 실행해보면서 이것저것 바꿔보면 금방 익숙해지실 거예요. "백문이 불여일견, 백견이 불여일타!" 아시죠? 😉

오늘 내용은 여기까지입니다! 꾸준히 따라와 주셔서 감사하고, 오늘 배운 내용들을 꼭 복습해보시길 바랍니다.
그럼, 모두들 즐거운 토요일 밤 잘 보내시고, 우리는 다음 주 일요일에 더 재미있는 내용으로 만나요! 👋