當進行腳本編程時,語句執行的流程控制通常有三種:
l 順序執行
l 選擇執行
l 循環執行
條件選擇if:
if語句可以進行嵌套
if 判斷條件;then
條件為真的分支代碼
elif 判斷條件;then
條件為真的分支代碼
elif 判斷條件;then
條件為真的分支代碼
else
以上情況都不符合的處理代碼
fi
逐條件進行判斷,當第一次遇到為”真”條件時,執行其分支,結束整個if語句
case 變量引用 in
case1)
分支
;;
case2)
分支
;;
*)
默認分支
;;
esac
case支持glob風格的通配符
l * 支持長度任意字符
l ? 任意單個字符
l [] 指定范圍內的任意單個字符
l a|b a或b
循環執行
將某段代碼重復運行多次
重復運行多少次:
循環次數事先已知
循環次數事先未知
有進入和退出條件
for循環
for 變量名 in 列表:do
循環體
done
列表生成方式
1) 直接給出列表
2) 整數列表
a) {start,end}
b) $(seq [start,[step]] end)
3) 返回列表的命令
$(command)
4) 使用glob *.sh
5) 變量引用
$@ $*
while循環
while condition; do
循環體
done
condition: 循環控制條件,進入循環之前,先做一次判斷;每一次循環之后會再次做判斷,條件為true,則 執行一次循環,直到條件測試狀態為false終止循環,condition一般應該有循環控制變量,而此 變量的值會在循環體不斷地被修正
進入條件: condition true
推出條件: condition false
until循環
until condition ; do
循環體
done
進入條件: condition false
退出條件: condition true
循環控制語句
continue[N]:提前結束第N層的本輪循環,而直接進入下一輪判斷,最內層為第1層
while condition1;do
cmd1
…
If condition2;then
continue
fi
cmdn
…
done
break
break[N]: 提前結束第N層循環,最內層為第1層
while condition1;do
cmd1
…
if condition2;then
break
fi
cmdn
…
done
習題
1、判斷/var/目錄下所有文件的類型
2、添加10個用戶user1-user10,密碼同用戶名
3、/etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件;分別讀取每個文件,以K開頭的文件輸出為文件加 stop,以S開頭的文件輸出為文件名加start;
“K34filename stop”
“S66filename start”
4、寫一個腳本,提示輸入正整數n的值,計算1+2+3+…n的總和
5、寫一個腳本,提示請輸入網絡地址,如192.168.0.0,判斷輸入的網段中主機在線狀態
fping -a -g 192.168.0.0/24 2>/dev/null
6、打印九九乘法表
7、求100以內所有正整數之和
8、通過ping命令探測172.16.250.1-254范圍內的所有主機的在線狀態,統計在線主機和離線主機各多少。
9、利用變量RANDOM生成10個隨機數字,輸出這個10數字,并顯示其中的最大者和最小者
10、打印國際象棋棋盤
原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/36987