Unix / Linux - Shell Loop Control
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 Unix와 Linux 셸 스크립팅의 흥미로운 세계에서 루프 제어에 대해 배울 것입니다. 여러분의 친절한 이웃 컴퓨터 선생으로서, 저는 이 여정을 단계별로 안내해 드리겠습니다. 프로그래밍에 처음이시라도 걱정하지 마세요 - 기본부터 시작해 차근차근 진행하겠습니다. 그럼 커피 한 잔 (또는 차, 당신의 취향에 따라)을 마시며, 루프를 시작해 보세요!
루프 이해하기
루프 제어에 뛰어들기 전에, 잠시 루프가 무엇인지 간단히复習해 보겠습니다. 상상해 보세요. "I love programming"를 黑板에 100번 쓰는 임무가 주어졌을 때, 수동으로 100번씩 쓰는 대신 루프를 사용하여 이 반복적인 작업을 자동화할 수 있습니다. 프로그래밍에서 루프는 exactly 이와 같은 역할을 합니다 - 동일한 명령을 여러 번 실행할 필요 없이 반복적으로 명령을 실행할 수 있게 해줍니다.
무한 루프
이제 흥미롭지만 잠재적으로 위험한 무한 루프에 대해 이야기해 보겠습니다. 무한 루프는 멈추지 않는 회전木馬와 같습니다 - 계속해서 돌아갑니다.
무한 루프는 무엇인가요?
무한 루프는 종료 조건이 결코 충족되지 않기 때문에 무한히 계속运行的 루프입니다. 이것이 재앙의 공식처럼 들릴 수 있지만, 실제로 무한 루프가 유용한 상황들이 있습니다 (나중에 그 부분에 대해 이야기하겠습니다).
무한 루프의 예제
셸 스크립팅에서 무한 루프의 간단한 예제를 보여드리겠습니다:
#!/bin/bash
while true
do
echo "This is an infinite loop!"
sleep 1
done
이 스크립트에서:
-
while true
는 항상 참인 조건을 만들어서 루프가 멈추지 않습니다. -
echo
는 우리의 메시지를 인쇄합니다. -
sleep 1
은 다음 반복 전에 스크립트를 1초 동안 멈추게 합니다.
이 스크립트를 실행하면 "This is an infinite loop!"가 매秒마다 인쇄되直到你手动停止脚本(일반적으로 Ctrl+C를 눌러서).
무한 루프를 언제 사용할까요?
믿을 수 없겠지만, 무한 루프는 항상 나쁜 것이 아닙니다! 다음과 같은 상황에서 유용할 수 있습니다:
- 지속적으로 실행해야 하는 프로그램을 만들 때 (예: 서버).
- 사용자가 반복적으로 선택할 수 있는 메뉴 시스템을 구현할 때.
- 특정 이벤트나 조건을 모니터링할 때.
기억하세요, 강력한 힘에는 큰 책임이 따릅니다. 필요할 때 무한 루프를 종료할 수 있는 방법을 항상 확보하세요!
break 문
이제 루프가 영원히 계속되는 것을 보았으니, 원하는 때에 그것을 멈추는 방법을 배워보겠습니다. break
문이 여기에 등장합니다 - 어떤 루프에서든 긴급히 나가는 문입니다.
break는 무엇을 하나요?
break
문은 현재 루프를 무시하고, 루프의 조건이 여전히 참이더라도 루프를 종료합니다.
break 사용 예제
이전의 무한 루프를 수정하여 5번 반복 후 멈추도록 만들어 보겠습니다:
#!/bin/bash
count=0
while true
do
echo "Loop iteration: $count"
count=$((count + 1))
if [ $count -eq 5 ]
then
echo "Breaking the loop!"
break
fi
sleep 1
done
echo "Loop has ended."
이 스크립트에서:
-
count
변수를 초기화하여 반복 횟수를 추적합니다. - 각 반복에서
count
를 증가시키고 5와 비교합니다. -
count
가 5라면 메시지를 인쇄하고break
를 사용하여 루프를 종료합니다.
이 스크립트를 실행하면 5까지 카운트하고 멈춥니다.
continue 문
break
는 루프를 완전히 종료시키지만, 때로는 현재 반복의 나머지 부분을 건너뛰고 다음 반복으로 이동하고 싶을 수 있습니다. 이때 continue
문이 유용합니다.
continue는 무엇을 하나요?
continue
문은 현재 루프 반복의 나머지 부분을 건너뛰고 다음 반복으로 이동합니다.
continue 사용 예제
다음 스크립트는 1에서 10까지의 숫자를 인쇄하지만 짝수를 건너뛰습니다:
#!/bin/bash
for i in {1..10}
do
if [ $((i % 2)) -eq 0 ]
then
continue
fi
echo $i
done
이 스크립트에서:
-
for
루프를 사용하여 1에서 10까지 반복합니다. -
if [ $((i % 2)) -eq 0 ]
는 숫자가 짝수인지 확인합니다. - 짝수라면
continue
를 사용하여 다음 반복으로 이동합니다. - 그렇지 않으면 숫자를 인쇄합니다.
이 스크립트를 실행하면 오직 홀수만 인쇄됩니다: 1, 3, 5, 7, 9.
모든 것을 통합해 보자
이제 무한 루프, break
, 그리고 continue
를 배웠으니, 이 개념들을 모두 사용하는 더 복잡한 예제를 만들어 보겠습니다:
#!/bin/bash
echo "Welcome to the Number Guessing Game!"
secret_number=$((RANDOM % 10 + 1))
attempts=0
while true
do
read -p "Guess a number between 1 and 10 (or 'q' to quit): " guess
if [ "$guess" = "q" ]
then
echo "Thanks for playing! The secret number was $secret_number."
break
fi
if ! [[ "$guess" =~ ^[0-9]+$ ]]
then
echo "Please enter a valid number or 'q' to quit."
continue
fi
attempts=$((attempts + 1))
if [ "$guess" -eq "$secret_number" ]
then
echo "Congratulations! You guessed the number in $attempts attempts!"
break
elif [ "$guess" -lt "$secret_number" ]
then
echo "Too low! Try again."
else
echo "Too high! Try again."
fi
done
이 스크립트는 다음을 보여줍니다:
- 무한 루프로 게임을 계속 실행합니다.
- 사용자가 정답을 맞추거나 나가기를 선택할 때
break
를 사용하여 루프를 종료합니다. - 무效한 입력을 건너뛰기 위해
continue
를 사용합니다.
루프 제어 문 요약
여기서 배운 루프 제어 문의 빠른 참고 표를 제공합니다:
문 | 설명 | 사용 사례 |
---|---|---|
while true |
무한 루프를 만듭니다 | 루프가 지속적으로 실행해야 할 때 |
break |
현재 루프를 종료합니다 | 특정 조건이 충족되었을 때 루프를 멈추고 싶을 때 |
continue |
현재 반복의 나머지 부분을 건너뛰고 다음 반복으로 이동합니다 | 특정 조건이 충족되지 않았을 때 현재 반복을 건너뛰고 싶을 때 |
기억하세요, 루프는 프로그래밍에서 강력한 도구이지만, 강력한 힘에는 큰 책임이 따릅니다. 항상 루프를 종료할 수 있는 방법을 확보하고, break
와 continue
를 신중하게 사용하여 효율적이고 효과적인 스크립트를 만들어 보세요.
미래의 셸 스크립팅 마법사 여러분, 행복한 코딩을! 여러분의 루프는 필요할 때만 무한히 계속되고, break
문이 항상 필요할 때 있기를 바랍니다. 다음 번에 다시 만나겠습니다. 계속해서 루프를 돌리고 배우세요!
Credits: Image by storyset