본문 바로가기

운영체제/shell(linux)

shell - 반복문 ( for, while, select )

728x90

반복문

특정 조건에 만족할 때 명령을 원하는 횟수만큼 반복

 

 

for문 예제)

#! /bin/bash

for i in 1 2 3
do
  echo $i
  sleep 2  //2초 간 대기 
done

실행

# sh for_sh

1

2

3

 

보통 c언어에서는 반복할 때 정수가 들어가지만 shell에서는 문자도 가능하다 !

#! /bin/bash

for i in kim lee park choi
do
  echo $i
  sleep 2  //2초 간 대기 
done

 

c언어 스타일 for문 예제)

sum=0
echo "i : 누적합계"

for ((i=1; i<=9; i++))
do
        echo -n "$i: "
        sum=`expr $sum + $i`
        echo "$sum"
done

결과

i : 누적합계
1: 1
2: 3
3: 6
4: 10
5: 15
6: 21
7: 28
8: 36

9: 45

 

쉘에서 list (배열과 같음) 예제)

#! /bin/bash

listvar1=(2 3 4 5 6 7 8 9)

for i in ${listvar1[*]}
do
        echo $i
        sleep 2
done

결과

2

3

4

5

6

7

8

9

 

 

while문과 until문

while문은 조건이 참인 경우 루프 수행 

while [ 조건 ]   //while [ 1 ] 공백 있어야함
do 
   명령문
done  

 

until문은 조건이 거짓인 경우 루프 수행

until [ 조건 ]
do
   명령문
done

 

##! /bin/bash
## countdown
##until : 조건이 참이 될 때 까지 반복한다 => false면 실행 
##while은 참이면 실행 

echo -n "숫자를 입력하세요 : "
read count

until [ $count -eq 0 ]
do
 echo "count $count"
 sleep 1
 count=`expr $count - 1`
done

##o이 안찍히는 이유 : 0이되면 참이 되므로 더이상 실행하지 않는다.

 

# sh until.sh
숫자를 입력하세요 : 3
count 3
count 2
count 1

 

 

select문 

select 변수 in 단어목록
do
   명령문
done 

 

#! /bin/bash

select i in 'pwd' 'date' 'ls' 'exit'
do
        $i   //echo로 출력하지 않음 !
done

결과

728x90