■ 7-2. 쉘스크립트 while 문
문법: ↓ 조건에 만족할 때만 루프문을 반복 수행한다 !!
while [ 조건 ] ←한 칸 씩 띄어쓰기를 해야한다
do
실행문
done
예제:
i=1
while [ $i -le 10 ]
do
echo $i
i=`expr $i + 1`
done
1
2
3
4
5
6
7
8
9
10
문제157.
구구단 2단을 출력하시오
(while loop 문으로)
vi 2_dan.sh
i=1
x=''
while [ $i -le 9 ]
do
x=`expr 2 \* $i`
echo "2 x "$i" = "$x
i=`expr $i + 1`
done
[orcl:~]$ sh 2_dan.sh
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
문제158.(while loop 문의 중첩)
2단부터 9단까지 출력하시오
vi 2_9_dan.sh
i=2
result=''
while [ $i -le 9 ]
do
j=1 <-----얘가 j 초기화 역할도 함
while [ $j -le 9 ]
do
result=`expr $i \* $j`
echo $i x $j = $result
j=`expr $j + 1`
done
i=`expr $i + 1`
done
문제159.(while loop 문 이용)
아래와 같이 ★표를 찍으시오
[orcl:~]$ sh star.sh
숫자를 입력하세요~5
★
★★
★★★
★★★★
★★★★★
$ vi star.sh
echo -n "숫자를 입력하세요~"
read num
i=1
result=''
while [ $i -le $num ]
do
j=1
while [ $j -le $i ]
do
result=$result★
echo $result
j=`expr $j + $i`
done
i=`expr $i + 1`
done
서일답
echo -n 숫자를 입력하라 :
read num
star=★
while [ $num -ge 1 ]
do
echo $star
star=$star★
num=`expr $num - 1`
done
문제160.
아래의 power 함수를 while loop 문으로 구현하시오
SQL> select power(2,3) from dual;
8
$sh power.sh 2 3
$vi power.sh
i=1
a=$1
while [ $i -lt $2 ]
do
a=`expr $a \* $1`
i=`expr $i + 1`
done
echo $a
문제161.
while loop 문으로 팩토리얼을 구현하시오
$sh factorial.sh 5
120
$ vi factorial.sh 5
i=1
res=1
while [ $i -le $1 ]
do
res=`expr $res \* $i`
i=`expr $i + 1`
done
echo $res
문제162.
while loop 문으로 log 함수를 구현하시오
$sh log.sh 2 8
$ vi log.sh
i=1
a=$1
b=$1
while [ $b -gt 0 ]
do
if [ $a -eq $2 ]; then
echo $i
b=`expr $b - $b` <--이걸 break 처리 해도 됨 !
else
a=`expr $a \* $1`
i=`expr $i + 1`
fi
done
***break 써도 됨!!!!!!!!!!
소현답(나누기 방식)
i=$1
res=$2
cnt=0
while [ $i -le $2 ]
do
res=`expr $res / $1`
cnt=`expr $cnt + 1`
i=`expr $i \* $1`
done
echo $cnt
문제163.(점심시간문제)
최대공약수를 while loop 문으로 구현하시오!
$ sh maxyaksu.sh 16 24
8
[orcl:~]$ sh maxyaksu.sh 52 16
4
$ vi maxyaksu.sh
if [ $1 -lt $2 ];then
min=$1
else
min=$2
fi
i=$min
while [ $i -gt 0 ]
do
a=`expr $1 % $i`
b=`expr $2 % $i`
if [ $a -eq 0 ] && [ $b -eq 0 ];then
echo $i
break
else
i=`expr $i - 1`
fi
done
------------------
보겸답
(최대공약수가 뺄셈으로도 가능하다는 걸 보여줌)
i=$1
j=$2
while [ $i -gt $j ]
do
i=`expr $i - $j`
done
echo $i
'linux' 카테고리의 다른 글
7-4.쉘스크립트_case 문 (0) | 2019.04.03 |
---|---|
7-3.쉘스크립트_csv생성 (0) | 2019.04.03 |
7-1.쉘스크립트 for문 (0) | 2019.04.03 |
7. 쉘스크립트 작성법 (0) | 2019.04.03 |
6. 프로세서 관리 (0) | 2019.04.03 |