VÒNG LẶP FORMỘT SỐ VÍ DỤ #!/bin/bash for file in /etc/* do if [ "${file}" == "/etc/resolv.conf" ] then countNameservers=$ grep -c nameserver /etc/resolv.conf echo "Total ${countNameserve
Trang 2MỤC LỤC
I Vòng lặp “ for ”
II Vòng lặp “ while ”,” until ”
III Một số lưu ý
Trang 3VÒNG LẶP FOR
# Dạng 1
for { tên biến } in { danh sách }
do
{Khối lệnh}
done
CẤU TRÚC
#Dạng 2 for (( expr1; expr2; expr3 ))
do {Khối lệnh}
done
Trang 4VÒNG LẶP FOR
VÍ DỤ
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Welcome $i times“
done
Danh sách có thể là dãy số “1 2 3 4 5”
Hoặc “{1 5}”
Hoặc “$(seq 1 2 20)”
Hoặc lệnh linux unix ví dụ “/etc/*” , “$@”,
“$*“ vv
Trang 5VÒNG LẶP FOR
MỘT SỐ VÍ DỤ
#!/bin/bash
for (( c=1; c<=5; c++ ))
do
echo “Lớp $c Bis"
done
Trang 6VÒNG LẶP FOR
MỘT SỐ VÍ DỤ
#!/bin/bash
for file in /etc/*
do
if [ "${file}" == "/etc/resolv.conf" ]
then countNameservers=$( grep -c nameserver /etc/resolv.conf)
echo "Total ${countNameservers} nameservers defined in ${file}"
break
fi
done
Trang 7VÒNG LẶP FOR
MỘT SỐ VÍ DỤ
#!/bin/bash
var=“myfile”
for i in ‘cat $var’
do
echo “lớp $i bis”
done
Trang 8VÒNG LẶP WHILE
CẤU TRÚC
while [ điều kiện ]
do {Khối lệnh}
done
- Trong khi thỏa [điều kiện] thì còn thực hienj {khối lệnh}
Trang 9VÒNG LẶP WHILE
MỘT SỐ VÍ DỤ
#!/bin/bash
x=1
while [ $x -le 5 ]
do
echo "Welcome $x times"
x=$(( $x + 1 ))
done
Trang 10VÒNG LẶP WHILE
MỘT SỐ VÍ DỤ
#!/bin/bash
{
n=0;max=0;dong=””
while read line
do
n=` expr length “$line” `
if [ $n –gt $max ]
then
dong=”$line”
max=$n
fi
done
echo “ $1 max line = $max la : $dong ”
}<$1
Trang 11VÒNG LẶP UNTIL
CẤU TRÚC
until [ điều kiện ]
do {Khối lệnh}
done
Ngược lại với while:
Trang 12VÒNG LẶP UNTIL
MỘT SỐ VÍ DỤ
#!/bin/bash
var=100
untill [var –eq 0]
do
echo $var
var=$(($var-25))
done
Trang 13MỘT SỐ LƯU Ý
Vòng lặp trong vòng lặp
#!/bin/bash
i=1
y=1
while [ $i -le 5 ]
do
while [ $y -le 10 ]
do
echo " $y * $i = $(( $y * $i )) "
(( y++ ))
done
y=1
(( i++ ))
Trang 14MỘT SỐ LƯU Ý
Vòng lặp vô hạn :
#!/bin/bash
for (( ; ; ))
do
echo "infinite loops [ hit CTRL+C to stop]"
done
#!/bin/bash
while :
do
echo "infinite loops [ hit CTRL+C to stop]"
done
Dùng “break”,”continue” để xử lý
Trang 15BREAK , CONTINUE
Break
- Để thoát khỏi vòng lặp có thể dùng lệnh break.
- Nếu dùng lệnh “break n“ thì n vòng lặp gần lệnh break nhất sẽ chấm dứt.
Trang 16BREAK , CONTINUE
Continue
- Dược gọi trong vòng lặp để nhảy ra khỏi vòng lặp
- Tương tự lệnh break, nếu gọi lệnh “continue n“ thì
shell bỏ qua các lệnh còn lại trong n vòng lặp chứa lệnh
“ continue n”
Trang 17BREAK , CONTINUE
Một số ví dụ
while :
do
read -p
"Enter two numnbers ( - 1 to quit ) : "
a
b
if [ $a -eq -1 ]
then
break
fi
ans=$(( a + b ))
echo $ans
Trang 18“END… ”