循環控制:
continue: 提前結束本次循環而開始評估下一輪;
break [n]: 跳出當前循環 ,如果有多層默認不指定則跳出一層(n 可以指定跳出幾層循環,n大於或等於1,如當需要跳出多個for循環)
練習:
1、求100以內所整數之和;
#!/bin/bash # declare -i sum=0 declare -i i=1 # while true;do if [ $i -gt 100 ];then break \\ 如果條件滿足則跳出while循環 else let sum=$sum+$i let i++ fi done echo $sum
2、求100以內所有偶數之和;
#!/bin/bash # declare -i sum=0 declare -i i=1 # while [ $i -le 100 ];do if [ $[$i%2] -eq 1 ];then let i++ continue \\ 如果條件滿足則結束本次循環,後面的語句將不再進行。 fi let sum+=$i let i++ done echo $sum
3、提示用戶輸入用戶名,顯示用戶的ID號;直到用戶輸入quit退出;
#!/bin/bash # while true;do read -p "please enter user: " userName if [ "$userName" == quit ];then exit 7 fi if [ -z "$userName" ] || ! id $userName >& /dev/null ;then echo "you enter user not exist or null." continue fi echo "$userName ID Number Is:`id -u $userName`" done
4、
(a)、提示用戶輸入一個磁盤設備的設備文件,如果設備文件不存在,就提示用戶重新輸入,直到用戶輸入正確爲止;
(b)、用戶可以輸入quit退出;
#!/bin/bash # while true;do read -p "please enter block device: " Device if [[ "$Device" == quit ]];then exit 8 fi [ -b "$Device" ] && break || echo "error enter !!!" done echo "you enter block device is: $Device."
擴展前一題
當用戶給出正確的塊設備後:
1、顯示用戶輸入塊設備,並提示用戶,後續的操作會損壞設備上的所有文件,讓用戶選擇是否繼續
2、如果用戶輸入y,則繼續後面的操作;
3、如果用戶輸入n,則顯示用戶選擇了中止,並退出腳本;
4、輸入任何其它字符,則讓用戶重新選擇;
5、如果用戶選擇了y, 則抹除指定塊設備上的所有分區;
#!/bin/bash # while true;do read -p "please enter block device: " Device if [[ "$Device" == quit ]];then exit 8 fi [ -b "$Device" ] && break || echo "error enter !!!" done echo "you enter block device is: $Device." while true;do read -p "enter Y|y contiue or N|n exit." option option=`echo $option | tr 'A-Z' 'a-z'` if [[ "$option" == y ]];then break elif [[ "$option" == n ]];then exit 7 else echo "Wrong input..." fi done dd if=/dev/zero of=$Device bs=512 count=1
練習:寫一個腳本
前提:配置好yum源
1、如果本機沒有一個可用的yum源,則提示用戶,並退出腳本(4);如果此腳本非以root用戶執行,則顯示僅有root纔有權限安裝程序包,而後退出(3);
2、提示用戶輸入一個程序包名稱,而後使用yum自動安裝之;儘可能不輸出yum命令執行中的信息;
如果安裝成功,則綠色顯示,否則,紅色顯示失敗;
3、如果用戶輸入的程序包不存在,則顯示錯誤後讓用戶繼續輸入;
4、如果用戶輸入quit,則正常退出(0);
5、正常退出前,顯示本地共安裝的程序包的個數;