사랑하애오
article thumbnail
Published 2021. 12. 20. 13:55
리눅스 반복문 Linux

Shell Loop Types

이번 시간에서는 Unix Shell에서 사용하는 반복문에 대해서 알아본다. 반복은 일련의 명령을 반복할 수 있도록 하는 프로그래밍 도구로서 아래에서 다양한 반복문 종류를 살펴보도록 한다.

각각의 반복문은 상황에 따라서 적절하게 선택할 수 있어야 한다.

The while loop

while 반복문은 조건이 발생할 때까지 명령을 지속적으로 실행한다.

문법

while command
do
   Statement(s) to be executed if command is true
done

Example

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done
$ ./while.sh 
0
1
2
3
4
5
6
7
8
9

The for loop

for 반복문은 리스트에 저장된 명령이 실행할 때까지 반복적으로 실행한다.

문법

for var in word1 word2 ... wordN
do
   Statement(s) to be executed for every word.
done

var는 변수 이름이며, word1 ~ wordN 구분된 문자열이다. for 반복문이 실행할 경우 리스트에서 각각의 문자를 꺼내고 실행한다.

Example

#!/bin/sh

for var in 0 1 2 3 4 5 6 7 8 9
do
   echo $var
done
$ ./for.sh
0
1
2
3
4
5
6
7
8
9

다음 예제는 홈 디렉터리에 저장되어 있는 .bash 이름을 가진 모든 파일 목록을 살펴보도록 한다.

#!/bin/sh

for FILE in $HOME/.bash*
do
   echo $FILE
done
$ ./for-bash.sh 
/Users/seongwon/.bash_history

The until loop

until 문법은 모든 조건이 완벽하게 충족할 때까지 반복한다.

문법

until command
do
   Statement(s) to be executed until command is true
done

Example

#!/bin/sh

a=0

until [ ! $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done
$ ./until.sh
0
1
2
3
4
5
6
7
8
9

The select loop

select 반목문은 옵션이 정해져 있는 항목을 선택하여 해당 문이 실행할 수 있도록 한다.

문법

select var in word1 word2 ... wordN
do
   Statement(s) to be executed for every word.
done

var는 변수 이름이며, word1 word2 ... wordN은 공백으로 이루어진 문자 리스트이다. 이 반복문은 ksh에서 처음 도입되어 bash에 적용되었으며 일반 sh에서는 실행할 수 없다.

Example

#!/bin/bash

select character in Sheldon Leonard Penny Howard Raj
do
    echo "Selected character: $character"
    echo "Selected number: $REPLY"
done
$./select.sh
1) Sheldon
2) Leonard
3) Penny
4) Howard
5) Raj
#? 5
Selected character: Raj
Selected number: 5
#? 4
Selected character: Howard
Selected number: 4
#?

쉘 환경을 PS3로 변경하여 다음과 같이 표시할 수 있다.

PS3="Enter a number: "

select character in Sheldon Leonard Penny Howard Raj
do
    echo "Selected character: $character"
    echo "Selected number: $REPLY"
done
$./select.sh
1) Sheldon
2) Leonard
3) Penny
4) Howard
5) Raj
Enter a number: 4
Selected character: Howard
Selected number: 4
Enter a number: 5
Selected character: Raj
Selected number: 5
Enter a number: ^C

Advanced

추가적으로 dialog와 GUI 방식으로 사용자의 입력을 선택받을 수 있도록 한다. 맥 사용자의 경우 dialog 설치를 진행한다.

$ brew install dialog 
$ dialog --clear --backtitle "Backtitle here" --title "Title here" --menu "Choose one of the following options:" 15 40 4 \
1 "Option 1" \
2 "Option 2" \
3 "Option 3"

출처

https://judo0179.tistory.com/122

profile

사랑하애오

@사랑하애

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!