Unix / Linux - Shell Loops: A Beginner's Guide

안녕하세요, 프로그래밍을 배우고자 하는 여러분! 오늘 우리는 Unix와 Linux에서의 셸 루프의 흥미로운 세계로 들어가보겠습니다. 코드를 한 줄도 작성해본 적이 없더라도 걱정 마세요 - 저는 단계별로 안내해드릴 테니까요. 수 년 동안 수많은 학생들을 가르친 경험을 바탕으로 말입니다. 시작해보겠습니다!

Unix / Linux - Shell Loops

셸 루프는 무엇인가요?

파티에 가서 모든 손님을 인사하는 상황을 가정해보세요. 각 사람마다 별도로 "안녕하세요" 메시지를 작성하는 대신, "각 손님에게 '안녕하세요'를 반복하세요"라고 말할 수만 있다면 얼마나 좋을까요? 이 precisely programming에서 루프가 하는 일입니다. 루프는 지시 사항을 여러 번 반복할 수 있게 해줍니다.

셸 스크립팅에서 루프는 반복적인 작업을 자동화하는 데 매우 유용합니다. 시간을 절약하고, 수동으로 명령을 반복할 때 발생할 수 있는 실수를 줄일 수 있습니다.

셸 루프의 종류

Unix/Linux 셸 스크립팅에서 주로 사용하는 세 가지 유형의 루프가 있습니다:

루프 유형 설명 사용 사례
for 루프 목록의 항목을 반복 정확한 반복 횟수를 알 때
while 루프 조건이 참인 동안 계속 반복 횟수를 알 수 없을 때
until 루프 조건이 참이 될 때까지 계속 while과 비슷하지만 논리가 반대

이제 각각의 루프를 자세히 탐구해보겠습니다.

'for' 루프

'for' 루프는 열심한 우체국 직원처럼 각 집에 메시지를 전달합니다. 목록의 항목을 순회하며 각각에 대해 작업을 수행합니다.

기본 문법은 다음과 같습니다:

for 변수 in 목록
do
명령어
done

간단한 예제를 보겠습니다:

#!/bin/bash
for 과일 in 사과 바나나 오렌지
do
echo "저는 $과일을 좋아해요"
done

이 스크립트를 실행하면 다음과 같은 출력을 보게 됩니다:

저는 사과를 좋아해요
저는 바나나를 좋아해요
저는 오렌지를 좋아해요

이 예제에서 우리의 '우체국 직원' (루프)은 "저는" 메시지를 각 '집' (과일)에 전달합니다.

'while' 루프

'while' 루프는 끈기 있는 판매원처럼 조건이 참인 동안 계속 문을 두드립니다. 조건이 참인 동안 명령어 집합을 계속 실행합니다.

기본 문법은 다음과 같습니다:

while [ 조건 ]
do
명령어
done

예제를 보겠습니다:

#!/bin/bash
count=1
while [ $count -le 5 ]
do
echo "Count is: $count"
count=$((count + 1))
done

이 스크립트는 다음과 같은 출력을 보여줍니다:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5

이 경우, 우리의 '판매원' (루프)은 조건이 5에 도달할 때까지 '문을 두드리' (카운트를 출력합니다).

'until' 루프

'until' 루프는 버스를 기다리는 것과 같습니다. 조건이 참이 될 때까지 명령어를 계속 실행합니다.

기본 문법은 다음과 같습니다:

until [ 조건 ]
do
명령어
done

예제를 보겠습니다:

#!/bin/bash
count=1
until [ $count -gt 5 ]
do
echo "Count is: $count"
count=$((count + 1))
done

이 스크립트는 while 루프 예제와 동일한 출력을 생성합니다. 차이점은 조건이 5보다 크게 될 때까지 계속하는 것입니다.

루프의 중첩

방 안에 방이 있는 것처럼 (예를 들어, 워크인 크로스) 루프 안에 또 다른 루프를 가질 수 있습니다. 이를 중첩 루프라고 합니다.

중첩된 for 루프의 예제를 보겠습니다:

#!/bin/bash
for i in 1 2 3
do
echo "Outer loop: $i"
for j in a b c
do
echo "  Inner loop: $j"
done
done

이 스크립트는 다음과 같은 출력을 보여줍니다:

Outer loop: 1
Inner loop: a
Inner loop: b
Inner loop: c
Outer loop: 2
Inner loop: a
Inner loop: b
Inner loop: c
Outer loop: 3
Inner loop: a
Inner loop: b
Inner loop: c

이를 다층 아파트 건물에 비유할 수 있습니다. 외부 루프는 각 층을 순회하며, 각 층에서 내부 루프는 각 아파트를 순회합니다.

while 루프의 중첩

while 루프를 중첩할 수도 있습니다. 예제를 보겠습니다:

#!/bin/bash
i=1
while [ $i -le 3 ]
do
echo "Outer loop: $i"
j=1
while [ $j -le 3 ]
do
echo "  Inner loop: $j"
j=$((j + 1))
done
i=$((i + 1))
done

이 스크립트는 중첩된 for 루프 예제와 유사한 출력을 생성합니다.

결론

축하합니다! 셸 루프의 세계로 첫 걸음을 뗐습니다. 루프는 반복 작업을 위해 도움이 되는 로봇처럼 생각하면 됩니다. 'for' 루프는 정확히 몇 번 반복할지 알 때 유용합니다. 'while'와 'until' 루프는 몇 번 반복할지 모를 때, 조건이 만족할 때까지 계속할 때 유용합니다.

프로그래밍 여정을 계속하면서 루프는 귀중한 도구가 될 것입니다. 반복적인 작업을 자동화하고, 대량의 데이터를 처리하고, 더 효율적이고 우아한 스크립트를 작성하는 데 도움이 될 것입니다.

계속 연습하면 곧 프로처럼 루프를 사용할 수 있을 것입니다! 모든 마스터 프로그래머는 여러분이 현재 있는 자리에서 시작했습니다. 행복하게 코딩하세요!

Credits: Image by storyset