1. 程式人生 > >bash程式設計之迴圈控制:

bash程式設計之迴圈控制:

bash程式設計之迴圈控制: for varName in LIST; do 迴圈體 done   while CONDITION; do 迴圈體 done   until CONDITION; do 迴圈體 done   迴圈控制: continue: 提前結束本次迴圈而開始評估下一輪; break [n]: 跳出當前迴圈   練習:求100以內所有偶數之和; declare -i sum=0 for i in {1..100} do  if [ $[$i%2] -eq 0 ];then    let sum+=$i  fi done echo $sum   或:                       declare -i evenSum=0 declare -i i=1   while [ $i -le 100 ]; do if [ $[$i%2] -eq 0 ]; then
let evenSum+=$i fi let i++ done echo $evenSum     declare -i evenSum=0 declare -i i=2   while [ $i -le 100 ]; do let evenSum+=$i let i+=2 done echo $evenSum     練習:提示使用者輸入使用者名稱,顯示使用者的ID號;直到使用者輸入quit退出; #!/bin/bash # if [ $UID -ne 0 ]; then echo "`basename $0` must be running as root"
exit 1 fi while true; do read -p "Enter a user name: " userName if [ "$userName" == 'quit' ]; then break fi   id -u $userName done         #!/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           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、正常退出前,顯示本地共安裝的程式包的個數;