本節課的指令碼也同樣共用在share中了。
第四天:迴圈結構
內容大綱:
應用執行個體分析
for迴圈
while迴圈
for迴圈的原理
達到效果
根據昨天的菜單修改。 選擇1、2、3後還會提示是否繼續選擇的功能。選擇4仍然是退出操作。
for variable in list list 變數列表池
do
command1
command2
done
執行個體一
forlist.sh
#!/bin/bash
#for with list
for loop in 1 2 3 4 5 定義loop的變數 1 2 3 4 5是變數列表
do
echo ${loop}
done
當後面沒有,即等於0,則停止迴圈。
執行個體二
var.txt 為了證明變數是斷行符號或者空格分隔,除非雙引號專門分隔
1 22
3
4
5
6
forfile.sh
#!/bin/bash
for loop in `cat var.txt`
do
echo ${loop}
done
執行個體三
編寫一個指令碼自動產生一個C類IP位址區段
IP位址區段網路部分由使用者指定
./ipaddr.sh 192.168.1
192.168.1.1
192.168.1.2
……
192.168.1.254
#!/bin/bash
for ip in `seq 1 254` seq 產生步進為1,即1-254的值
do
echo ${1}.${ip}
done
for迴圈嵌套
for 變數名1 in 列表1
do
for 變數名2 in 列表2
do
命令1
…
done
done
執行個體四
編寫一個指令碼自動產生一個C類IP位址區段
IP位址區段網路部分由使用者指定,主機結束部分由使用者指定
./ipaddr2.sh 192.168.1 100
192.168.1.1
192.168.1.2
……
192.168.168.1.100
#!/bin/bash
for ip4 in `seq 1 ${2}`
do
echo ${1}.${ip4}
done
#!/bin/bash
for ip3 in `seq 1 5`
do
for ip4 in `seq 1 ${2}`
do
echo ${1}.${ip3}.${ip4}
done
done
while迴圈的原理
界限測試=條件測試
真假測試。
如果一直為真的話則不會停止, 死迴圈。
while的格式
while 條件
do
命令1
命令2
done
while的應用情境
while死迴圈
while [ "1" == "1" ]
do
…
done
while條件迴圈
while [ ${num} –lt 10] 小於10一直迴圈
do
…
done
解決問題。
使用while來產生一個死迴圈
通過exit來退出整個指令碼
menu-while.sh
#!/bin/bash
while [ "1" == "1" ]
do
clear
echo “——————–menu—————–”
echo “1) Show Time”
echo “2) CPU load”
echo “3) Memory free”
echo “0) Exit”
echo “——————————————–”
echo -n “Enter you chose [0-3]:”
read Chose
case ${Chose} in
0) exit ;;
1) date +%T;;
2) uptime | awk -F ‘[,:]‘ ‘{print $7}';;
3) free -m | awk ‘$1==”Mem:”{print $4}';;
*) echo “This is not between 0-3.” ;;
esac
echo -n “Do you contine [y/n]:”
read contine
if [ "${contine}" == "n" -o "${contine}" == "N" ]
then
exit
fi
done
課後練習
編寫一個指令碼,產生一個二級的菜單。
第一級有三個功能項:cpu info , memory info ,exit
cpu info 第二級中有四個功能項:分別是顯示cpu的類型,顯示cpu的負載,返回主菜單,退出指令碼
memory第二級中有四個功能項:分別是顯示記憶體剩餘量,swap的剩餘量,返回主菜單,退出指令碼。
總結回顧
for迴圈的特性
他和c語言和java不一樣,不是根據判斷語句去控制次數
for實現死迴圈很難。while做死迴圈很簡單。