[Linux] Shell Script - 반복문 [ while / for ]
Nowhere 와 Now here 의 차이

IT/ㄴ Linux Shall Script

[Linux] Shell Script - 반복문 [ while / for ]

TIENE 2023. 7. 24. 16:42
반응형

while

- while문은 조건식이 참일 동안에 계속 반복하는 특성을 갖는다.

- 조건이 만족할 때까지 반복한다.

 

- 무한루프에서 5번 반복 후 while 문을 중지한다. 두 가지 반복문으로 가능하다.

#! /bin/sh
i=1
while [ 1 ]                 # 조건에 [ 1 ]  또는  [ : ]가 오면 항상 참이 된다. 
do
      echo "centos 7"
      i=`expr $i + 1`
      if [ $i -gt 5 ]
      then
              break
      fi
done
exit 0

#! /bin/bash
i=1
while [ $i -le 5 ]
do
        echo "TIENE"
        i=`expr $i + 1`
done
exit 0

 

- 입력한 숫자의 각각 홀수의 합과 짝수의 합을 구하기

- 10 = [1 + 3 + 5 + 7 + 9] = [ 2 + 4 + 6 + 8 + 10 ]

#! /bin/bash
echo "입력 : " ; read num
total1=0
i=2
while [ $i -le $num ]
do
        total1=`expr $total1 + $i`
        i=`expr $i + 2`
done
        echo "짝수의 합 : " $total1
total2=0
i=1
while [ $i -le $num ]
do
        total2=`expr $total2 + $i`
        i=`expr $i + 2`
done
total3=`expr $total1 + $total2`
echo "총합 : "  $total3
exit 0

 

 

- admin / 1111 과 kedu / 1111로 접속을 할 때까지 반복하며, 접속한 계정이 관리자와 관리자가 아닌 문구를 출력하기

#!/bin/sh
while [ 1 ]
do
echo "ID : " ; read id
echo "PW : " ; read pw

        if [ $id = admin ]&&[ $pw = 1111 ]
        then
                echo "관리자 접속"
                break
        fi

        if [ $id = kedu ]&&[ $pw = 1111 ]
        then
                echo "관리자가 아닙니다."
                break
        fi
done
exit

 


for

- 다른 프로그래밍 언어에서 사용하던 것과 약간 다른 형태를 가진다.

- 변수에 각각의 값을 대입한 후에 do 안의 '반복할 문장을' 수행하게 된다.

- 그러므로, 값의 개수만큼 반복하게 된다.

for [변수] in [값1] [값2] [값3]
do
       [반복할 문장]
done

 

- 만약에 값이 많아진다면, 비효율적이기 때문에, 다음과 같은 형태를 사용할 수 있다.

for(초기치;조건;증감치)
do
       [반복할 문장]
done

 

- 1부터 10까지의 합을 for을 사용하여 출력하기

#!/bin/sh
hap=0
for((i=1;i<=10;i++))              
do
          hap=`expr $hap + $i`
done                                        # i가 10까지 반복하여 증가하다가 11이 되면 빠져나온다.
echo "1부터 10까지의 합 : " $hap
exit 0

 

 

- 1부터 100까지의 짝수와 홀수의 합을 출력하기

#!/bin/sh
hap1=0       #짝수
hap2=0       #홀수
for((i=1;i<=100;i++))
do
      if [ `expr $i % 2` -eq 0 ]
      then
            hap1=`expr $hap1 + $i`
      else
            hap2=`expr $hap2 + $i`
      fi
done

echo "짝수의 합: " $hap1
echo "홀수의 합: " $hap2

exit 0

 

- 숫자를 입력하여 해당 숫자의 구구단을 출력하기

#!/bin/sh
echo "숫자 입력 : " ; read dan
for((i=1;i<10;i++))
do
      echo "$dan * $i" = `expr $dan \* $i`
done
exit 0

 

- 1부터 100까지 숫자 중에서 3의 배수와 4의 배수의 합 출력하기

#!/bin/sh
hap=0
for((i=1;i<100;i++))
do
        if [ `expr $i % 3` -eq 0 ] || [ `expr $i % 4` -eq 0 ]
        then
                hap=`expr $hap + $i`
        fi
        exit 1
done
echo "3의 배수와 4의 배수의 합 : " $hap
exit 0


 

반응형