[Shell Script] for, whlie, until 반복문
Shell script에서 for, whlie, until을 사용하여 반복문을 사용하는 방법에 대해서 알아보겠습니다.
이 글의 예제들은 Ubuntu 20.04에서 Bash shell을 사용하여 작성되었습니다.
1. for 문
for문은 다음과 같이 사용할 수 있습니다. 다른 언어의 for문과 동일합니다.
이 예제는 특정 횟수만큼 for문을 반복하는 예제입니다.
for i in {1..5}; do
: i가 1에서 5까지 반복
#!/bin/bash
for i in {1..5}; do
echo "Loop: $i"
done
Output:
Loop: 1
Loop: 2
Loop: 3
Loop: 4
Loop: 5
for문으로 배열을 순회하는 예제
for문을 이용하여 배열의 모든 요소들을 순회하려면 아래와 같이 구현하면 됩니다.
#!/bin/bash
# 배열 정의
fruits=("Apple" "Banana" "Orange" "Grape")
# 배열의 각 항목을 순회하며 출력
for fruit in "${fruits[@]}"; do
echo "Fruit: $fruit"
done
Output:
$ bash example.sh
Fruit: Apple
Fruit: Banana
Fruit: Orange
Fruit: Grape
break로 for문을 종료하는 예제
for문 안에서 break
를 호출하면 for문을 중단합니다.
아래 예제는 1에서 10까지 반복하지만, 5에서 break가 호출되어 10까지 반복하지 않고 중단됩니다.
#!/bin/bash
for i in {1..10}; do
if [ $i -eq 5 ]; then
echo "for문을 중단합니다."
break
fi
echo "반복 횟수: $i"
done
Output:
$ bash example.sh
반복 횟수: 1
반복 횟수: 2
반복 횟수: 3
반복 횟수: 4
for문을 중단합니다.
for문에서 continue를 사용하는 예제
for문 안에서 continue
를 호출하면 실행 중인 루프를 중단하고, 다음 반복을 합니다.
아래 예제는 1에서 10까지 반복하는데, 5에서 continue를 호출합니다. 5의 반복에서는 continue로 중단되어 echo "반복 횟수: $i"
코드가 수행되지 않으며 다음 6으로 넘어갑니다.
#!/bin/bash
for i in {1..10}; do
if [ $i -eq 5 ]; then
echo "5는 건너뜁니다."
continue
fi
echo "반복 횟수: $i"
done
Output:
$ bash example.sh
반복 횟수: 1
반복 횟수: 2
반복 횟수: 3
반복 횟수: 4
5는 건너뜁니다.
반복 횟수: 6
반복 횟수: 7
반복 횟수: 8
반복 횟수: 9
반복 횟수: 10
현재 디렉토리의 모든 파일을 순회하는 예제
for문을 사용하면 현재 디렉토리 아래에 있는 파일들을 쉽게 탐색할 수 있습니다.
아래와 같이 입력하면 file
에 현재 디렉토리의 파일들 입력되면서 for문을 순회합니다.
#!/bin/bash
# 현재 디렉토리의 파일들을 순회하며 출력
for file in *; do
echo "파일: $file"
done
Output:
$ bash example.sh
파일: example.sh
2. while 문
while문은 다음과 같이 사용할 수 있습니다. 다른 언어의 while문과 동일합니다.
while [ $counter -le 5 ]; do
: count가 5 이하일 때까지 반복-le
: “is less than or equal to “의 의미로, 어떤 값보다 작거나 또는 같을 때 true$counter -le 5
: count가 5보다 작거나 같으면 true, 5보다 크면 false
#!/bin/bash
counter=1
while [ $counter -le 5 ]; do
echo "Loop: $counter"
((counter++))
done
Output:
$ bash example.sh
Loop: 1
Loop: 2
Loop: 3
Loop: 4
Loop: 5
while문에서 배열을 순회하는 예제
아래 예제는 while문에서 배열의 모든 요소를 순회하면서 값을 출력하는 예제입니다.
while [ $index -lt $array_length ]; do
: index가 array_length보다 작으면 while문 수행-lt
: “is less than”의 의미로,A -lt B
는 A가 B보다 작을 때 true
# 배열 정의
fruits=("Apple" "Banana" "Orange" "Grape")
index=0
array_length=${#fruits[@]}
while [ $index -lt $array_length ]; do
fruit=${fruits[$index]}
echo "Fruit: $fruit"
((index++))
done
Output:
$ bash example.sh
Fruit: Apple
Fruit: Banana
Fruit: Orange
Fruit: Grape
break로 while문을 종료하는 예제
아래 예제는 무한 루프로, 계속 사용자 입력을 받고, 사용자가 “exit”를 입력하면 break
를 사용하여 탈출하는 예제입니다.
if [ "$input" == "exit" ]; then
: input이 “exit”이면 if문이 수행됨break
: while문 반복 종료
#!/bin/bash
echo "종료하려면 'exit'을 입력하세요."
while true; do
read -p "입력: " input
if [ "$input" == "exit" ]; then
echo "루프를 종료합니다."
break
fi
echo "입력된 값: $input"
done
Output:
$ bash example.sh
종료하려면 'exit'을 입력하세요.
입력: a
입력된 값: a
입력: b
입력된 값: b
입력: exit
루프를 종료합니다.
3. until 문
until은 while과 비슷하지만 반복하는 조건이 반대입니다. 즉, 어떤 조건이 오기 전까지 반복문을 반복합니다.
예를 들어, 아래 코드는 counter
가 5 이상이 되기 전까지 반복합니다.
until [ $counter -gt 5 ]; do
: 조건이 false이면 반복, true면 중지 (counter가 5 이상이 되기 전까지 반복)-gt
: “is greater than”의 의미로 어떤 값보다 클 때 true$counter -gt 5
: counter가 5보다 클 때 true, 이하일 때 false
#!/bin/bash
counter=1
until [ $counter -gt 5 ]; do
echo "Loop: $counter"
((counter++))
done
Output:
$ bash example.sh
Loop: 1
Loop: 2
Loop: 3
Loop: 4
Loop: 5