9、循環語句中break和continue的使用

回顧bash編程之循環控制:
for varName in LIST; do
循環體
done

while CONDITION; do
循環體
done

until CONDITION; do
循環體
done

下面學習循環控制:
continue: 提前結束本次循環而開始評估下一輪;
break [n]: 跳出當前循環,去執行本次循環體外的語句,n控制跳出底基層循環,默認是第一層

練習:求100以內所有偶數之和;
declare -i evenSum=0
declare -i i=1

while [ $i -le 100 ]; do
if [ [$i%2] -eq 1 ]; then
let i++
continue
fi
let evenSum+=$i
let i++
done

練習:提示用戶輸入用戶名,顯示用戶的ID號;直到用戶輸入quit退出;
腳本中有這一種break可以退出死循環
#!/bin/bash
#
if [ $UID -ne 0 ]; then
echo "basename $0 must be running as root"
exit 1
fi

while true; do 這裏是一個死循環,只寫一個true就行了
read -p "Enter a user name: " userName
if [ "$userName" == 'quit' ]; then
break
fi

id -u $userName
done
下面這一個是檢查輸入的用戶是不是存在的用戶(結合了continue和break)
#!/bin/bash
#
while true; do
read -p "Enter a user name: " userName
if [ "$userName" == 'quit' ]; then
break
fi

    if ! id $userName &> /dev/null; then
            echo "$userName not exist."
            continue
    fi

        echo -e "this $userName uid is `id -u $userName`"

done

練習:寫一個腳本,
1、提示用戶輸入一個磁盤設備的設備文件,如果設備文件不存在,就提示用戶重新輸入,直到用戶輸入正確爲止;
2、用戶可以輸入quit退出;
#!/bin/bash
#
while true; do
read -p "Enter a block device file: " diskFile
if [ "$diskFile" == 'quit' ]; then
exit 7
fi

if [ -b "$diskFile" ]; then
break
else
echo "Wrong device file..."
fi
done

練習:擴展前一題
當用戶給出正確的塊設備後:
1、顯示用戶輸入塊設備,並提示用戶,後續的操作會損壞設備上的所有文件,讓用戶選擇是否繼續
2、如果用戶輸入y,則繼續後面的操作;
3、如果用戶輸入n,則顯示用戶選擇了中止,並退出腳本;
4、輸入任何其它字符,則讓用戶重新選擇;

練習:擴展上一題
1、如果用戶選擇了y, 則抹除指定塊設備上的所有分區;
#!/bin/bash
#
while true; do
read -p "Enter a block device file: " diskFile
if [ "$diskFile" == 'quit' ]; then
exit 7
fi

    if [ -b "$diskFile" ]; then   我們做字符串比較時,加上雙引號,因爲爲空的時候不好判斷,爲空的時候也不知道他是不是文件,默認的這種比較時通過的
            break
    else
            echo "Wrong device file..."
    fi

done
echo "Device is: $diskFile."
while true; do
read -p "Y or y for continue, N or n for quiting: " option
option=echo $option | tr 'A-Z' 'a-z' 輸入的任何字符都轉換成小寫的
if [ "$option" == 'n' ]; then
exit 8
fi
if [ "$option" == 'y' ]; then
break
else
echo "Wrong input..."
fi
done

dd if=/dev/zero of=$diskFile bs=512 count=1

練習:寫一個腳本
1、提示用戶輸入一個目錄路徑;
2、顯示目錄下至少包含一個大寫字母的文件名;

#!/bin/bash
#
while true; do
read -p "Enter a directory: " dirName
[ "$dirName" == 'quit' ] && exit 3
[ -d "$dirName" ] && break || echo "Wrong directory..."
done

for fileName in $dirName/; do
if [[ "$fileName" =~ .
[[:upper:]]{1,}.* ]]; then 這裏的{}不需要反斜槓轉意
echo "$fileName"
fi
done

練習:寫一個腳本
前提:配置好yum源
1、如果本機沒有一個可用的yum源,則提示用戶,並退出腳本(4);如果此腳本非以
root用戶執行,則顯示僅有root纔有權限安裝程序包,而後退出(3);
2、提示用戶輸入一個程序包名稱,而後使用yum自動安裝之;儘可能不輸出yum命令執行
中的信息;
如果安裝成功,則綠色顯示,否則,紅色顯示失敗;
3、如果用戶輸入的程序包不存在,則顯示錯誤後讓用戶繼續輸入;
4、如果用戶輸入quit,則正常退出(0);
5、正常退出前,顯示本地共安裝的程序包的個數;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章