쉘 스크립트

[쉘 스크립트] for / while 문

whiporithm 2023. 10. 9. 01:52

 


 

for문

조건문 다음에는 반복문이다, for문의 기본적인 형태는 두가지가 존재한다.

 

첫번째로는 파이썬과 같이 in 키워드를 사용하여 표현하는 것이다.

 

for 변수 in [ 범위(리스트, 또는 배열, 그 외의 묶음 등) ]
do
  수행문
done

 

어떤것을 순회할지 in 뒤에 명시해준다 이후 do안에 수행문을 작성하고 done으로 for문의 끝을 알려준다.

 

 

두번째로는 C나Java에서 for문을 표현하는 고전적인 형태이다.

 

for ((변수=초기값; 조건식; 증가값))
do
  수행문
done

 

일반적으로 아는 for문의 형태로 표현한다.

 

 

for문 예제

1) in 을 사용한 기본 사용법

#!/bin/bash

for num in 1 2 3
do
  echo $num
done

 

#!/bin/bash

numbers="1 2 3"

for num in $numbers
do
  echo $num
done

 

in 뒤에 위와 같이 순회할 요소들을 명시하거나, 또는 그 값을 변수에 저장해서 순회할 수 있다. 

 

 

2) 범위를 디렉토리로 사용할 경우

 

범위에 경로를 넣어 디렉토리에 있는 파일들을 순회할수도 있다. 아래는 환경변수 HOME 을 사용하여 그 아래에 있는 파일들을 출력했다.

 

#!/bin/bash
echo $HOME
for file in $HOME/*
do
  echo $file
done

 

 

/home/whipbaek 아래의 디렉토리 구조는 이렇게 되어있다.

 

환경변수 HOME 을 출력해보니 /home/whipbaek 으로 되어있고, 그 아래 디렉토리들이 순회하며 출력된 결과를 볼 수 있다.

 

3) 범위에 중괄호 사용

in 뒤에 중괄호 {} 를 사용하여 범위를 지정해줄 수 있다.

 

#!/bin/bash

for num in {1..5} # 1부터 5까지 1씩 증가하면서 num에 할당해준다.
do
  echo $num
done

 

 

#!/bin/bash

for num in {1..10..2} # 1부터 10까지 2씩 증가하면서 num에 할당해준다.
do
  echo $num
done

 

 

위와 같이 중괄호를 사용하면 for(변수;조건식;증감) 식을 대신할 수 있을 거 같다.

 

 

4) 범위에 배열 사용

배열을 범위에 사용할 수도 있다. 단 범위로 배열을 사용하는 경우에는 값 사이에 쉼표를 사용하면 안된다. 그리고 모든 요소들을 순회하기 위해서는 ${배열명[@]} 을 사용하여 배열의 모든 요소를 사용한다고 명시해주어야 한다.

 

#!/bin/bash

array=("apple" "banana" "pineapple")

for fruit in ${array[@]}
do
  echo $fruit
done

 

 

5) 소괄호문 for

C언어에서 사용하는 정통적인 방식인 소괄호를 이용한 for문 예제이다.

 

#!/bin/bash

for((num=0; num<3; num++))
do
  echo $num
done

 

 

 

While 문

while문 또한 지원된다. 조건은 if문과 유사하게 대괄호로 표시하고 조건이 맞으면 계속 수행하고 아니라면 벗어난다.

 

while [ 조건식 ]
do
  수행문
done

 

#!/bin/bash

num=0

while [ $num -lt 5 ]
do
 echo $num
 num=$((num+1))
done

 

 

 

 

 

# 위 내용은 "처음배우는 쉘 스크립트" 를 공부하고 정리한 내용입니다.