1. Shell Loop Types
이번 시간에서는 Unix Shell에서 사용하는 반복문에 대해서 알아본다. 반복은 일련의 명령을 반복할 수 있도록 하는 프로그래밍 도구로서 아래에서 다양한 반복문 종류를 살펴보도록 한다.
각각의 반복문은 상황에 따라서 적절하게 선택할 수 있어야 한다.
1.1. The while loop
while 반복문은 조건이 발생할 때까지 명령을 지속적으로 실행한다.
1.1.1. 문법
<code />
while command
do
Statement(s) to be executed if command is true
done
1.1.2. Example
<code />
#!/bin/sh
a=0
while [ $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
<code />
$ ./while.sh
0
1
2
3
4
5
6
7
8
9
1.2. The for loop
for 반복문은 리스트에 저장된 명령이 실행할 때까지 반복적으로 실행한다.
1.2.1. 문법
<code />
for var in word1 word2 ... wordN
do
Statement(s) to be executed for every word.
done
var는 변수 이름이며, word1 ~ wordN 구분된 문자열이다. for 반복문이 실행할 경우 리스트에서 각각의 문자를 꺼내고 실행한다.
1.2.2. Example
<code />
#!/bin/sh
for var in 0 1 2 3 4 5 6 7 8 9
do
echo $var
done
<code />
$ ./for.sh
0
1
2
3
4
5
6
7
8
9
다음 예제는 홈 디렉터리에 저장되어 있는 .bash 이름을 가진 모든 파일 목록을 살펴보도록 한다.
<code />
#!/bin/sh
for FILE in $HOME/.bash*
do
echo $FILE
done
<code />
$ ./for-bash.sh
/Users/seongwon/.bash_history
1.3. The until loop
until 문법은 모든 조건이 완벽하게 충족할 때까지 반복한다.
1.3.1. 문법
<code />
until command
do
Statement(s) to be executed until command is true
done
1.3.2. Example
<code />
#!/bin/sh
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
<code />
$ ./until.sh
0
1
2
3
4
5
6
7
8
9
1.4. The select loop
select 반목문은 옵션이 정해져 있는 항목을 선택하여 해당 문이 실행할 수 있도록 한다.
1.4.1. 문법
<code />
select var in word1 word2 ... wordN
do
Statement(s) to be executed for every word.
done
var는 변수 이름이며, word1 word2 ... wordN은 공백으로 이루어진 문자 리스트이다. 이 반복문은 ksh에서 처음 도입되어 bash에 적용되었으며 일반 sh에서는 실행할 수 없다.
1.4.2. Example
<code />
#!/bin/bash
select character in Sheldon Leonard Penny Howard Raj
do
echo "Selected character: $character"
echo "Selected number: $REPLY"
done
<code />
$./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로 변경하여 다음과 같이 표시할 수 있다.
<code />
PS3="Enter a number: "
select character in Sheldon Leonard Penny Howard Raj
do
echo "Selected character: $character"
echo "Selected number: $REPLY"
done
<code />
$./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
1.4.3. Advanced
추가적으로 dialog와 GUI 방식으로 사용자의 입력을 선택받을 수 있도록 한다. 맥 사용자의 경우 dialog 설치를 진행한다.
<code />
$ brew install dialog
<code />
$ 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"

출처
'Linux' 카테고리의 다른 글
Linux Ubuntu (WSL) 폰트 변경 (0) | 2021.12.23 |
---|---|
리눅스(우분투(Ubuntu)) Shell Script 달력 (0) | 2021.12.22 |
리눅스 오늘 날짜 파일 생성하기 (0) | 2021.12.20 |
리눅스 비교연산, 산술연산 - expr과 bc명령 (0) | 2021.12.17 |
리눅스 비교연산, 산술연산 - test 명령 (0) | 2021.12.17 |