for 변수 in 값1 값2 값3 ...
do
반복문
done
#!/bin/sh
sum=0
for i in 1 2 3 4 5 6 7 8 9 10
do
hap=`expr $hap + $i`
done
echo "sum = "$hap
exit 0
[root@localhost ~]# sh for1.sh
sum = 55
- 합계를 누적하기 위한 변수를 0으로 선언
- i 변수에 1~10까지 반복하여 넣어 do 이후의 반복할 문장을 반복 횟수만큼 실행
2-1.for ((i=1; i<=10 i++))
이나seq 1 10
처럼 사용할 수도 있다.- 처음에 선언한 변수에 i 변수의 값 누적
#!/bin/sh
for fname in $(ls *.sh)
do
echo "-----$fname-----"
head -3 $fname
done
exit 0
[root@localhost ~]# sh for2.sh
-----andor.sh-----
#!/bin/sh
echo "filenmae"
read fname
-----cal.sh-----
#!/bin/sh
num1=100
num2=$num1+200
-----case1.sh-----
#!/bin/sh
case "$1" in
start)
(중략)
-----parameter.sh-----
#!/bin/sh
echo "file name is <$0>"
echo "first parameter is <$1>"
-----val.sh-----
#!/bin/sh
vartest="hello world"
echo $vartest
- fname 변수에
ls *.sh
명령의 실행결과를 하나씩 넣어 반복문을 수행한다.- 현재 디렉토리에 있는 .sh 파일 개수만큼 실행을 반복한다.
- 파일 이름을 출력 후 head 명령어를 통해 파일의 앞 3줄만 출력한다.
#!/bin/sh
while [ 1 ]
do
echo "true"
done
exit 0
[root@localhost ~]# sh while1.sh
true
true
true
true
true
^C
무한으로 반복하는 while문이다.
#!/bin/sh
sum=0
i=1
while [ $i -le 10 ]
do
sum=`expr $sum + $1`
i=`expr $i + 1`
done
echo "sum : "$sum
exit 0
[root@localhost ~]# sh while2.sh
sum = 55
for1.sh의 반복문을 while문으로 표현한 것이다.
#!/bin/sh
echo "Insert Password"
read pw
while [ $pw != "1234" ]
do
echo "Wrong Password"
read pw
done
echo "Correct"
exit 0
[root@localhost ~]# sh while3.sh
Insert Password
1444
Wrong Password
4321
Wrong Password
1234
Correct
정확한 패스워드를 입력받을 때 까지 반복문을 수행하는 과정이다.
while문과 용도는 비슷하지만 while문은 조건식이 거짓일 떄까지 반복하지만 until문은 조건식이 참일 떄까지 반복한다.
while문 예제2 번을 until문으로 바꾼다면 until[ $1 -gt 10 ]
으로 바꿔야 할 것이다.
#!/bin/sh
echo "infinite repeat (b: break, c:continue, e:exit)"
while [ 1 ]
do
read input
case $input in
b | B)
break;;
c | C)
echo "continue"
continue;;
e | E)
echo "exit"
exit 1;;
esac;
done
echo "break"
exit 0
[root@localhost ~]# sh etc.sh
infinite repeat (b: break, c:continue, e:exit)
c
continue
b
break
- 무한반복을 수행하면서 do 이후의 문장을 계속 실행한다.
- b 또는 B를 입력받는 경우 break가 실행되며 while문을 종료하고
echoe "break"
문장을 출력하며 다음 문장을 수행한다.- c 또는 C를 누른다면 continue를 실행하면서 다시 while문의 조건식으로 돌아간다.