標籤:while
while 測試條件
do
語句1
語句2
done
測試條件:條件滿足就迴圈,直到條件不滿足就退出迴圈
while迴圈如何退出?在迴圈體中改變測試條件相應的變數值
補充:算術運算子
sum=$[$sum+$i] = sum+=$i
-=
*=
sum+=1 = let sum++
sum--
sam=3
while [ $sam - le 5 ]
do
let sam++
done
例子:使用者隨機輸入一個數值,就迴圈幾次echo "test" >> /tmp/123
#!/bin/bash a=1 read -p "Please enter a number:" sam while [ $a -le $sam ] do echo "test" >> /tmp/123 let a++ done
例子2:當前系統所有使用者,ID號為偶數就輸出使用者名稱和shell
#!/bin/bashfile=/etc/passwdwhile read line read 會自動將$file這個檔案中的每一行,將讀取的每一行的值付給$linedo id=$(echo $line | cut -d: -f3) if [ $[$id%2] -eq 0 ] $id除於2取餘等於0 就執行 then username=$(echo "$line" |cut -d: -f1) shell=$(echo "$line" | cut -d: -f7) echo -e "UserName:$username\nShell:$shell\n" fidone < $file
列子:將使用者輸入的字元轉換成大寫,字元quit退出指令碼
#!/bin/bash
read -p "A string:" stringwhile [ "$string" != "quit" ] 如果使用者輸入的不是quit就會一直迴圈直到字串是quit do echo "$strin" | tr "a-z" "A-Z" read -p "New String [ quit for exit] :" string done
------------------------------------------------------------------------------------
until迴圈 測試條件
do
語句1
語句2
done
條件不滿足迴圈,直到滿足就退出迴圈
列子:將使用者輸入的字元轉換成大寫,字元quit退出指令碼
#!/bin/bash
read -p "A string:" string
until [ "$string" == "quit" ] 如果使用者輸入的是a.$string=quit 條件不滿足就繼續迴圈,知道$string=quit條件滿足時退出
do
echo "$strin" | tr "a-z" "A-Z"
read -p "New String [ quit for exit] :" string
done
例子2:每隔5秒查看hadoop使用者是否登入,顯示登入並退出;否則顯示目前時間,並輸出hadoop尚未登入
#!/bin/bashuntil who | grep "^hadoop" &> /dev/null do echo "$(date) hadoop not login" sleep 5donedong echo "hadoop login" exit 0
例子3:顯示如下菜單,讓使用者選擇,並輸出相關資訊,當使用者選擇完成,顯示相應資訊,不退出,讓使用者重新選擇,直到輸入quit退出
cat << EOF
d|D) show disk usages
m|M) show memory usages
s|S) show swap usages
*)quit
EOF
---------------------------------------
#!/bin/bashcat << EOFd|D) show disk usagesm|M) show memory usagess|S) show swap usages*)quitEOFread -p "Please Input Device :" usagesuntil [ "$usages" == "quit" ]do case $usages in d|D) df -h read -p "Please Input Device :" usages ;; m|M) free -m | head -2 read -p "Please Input Device :" usages ;; s|S) free -m | tail -1 read -p "Please Input Device :" usages ;; *) echo "Input error" exit 7 esacdone ;; esacdong
本文出自 “懸劍” 部落格,請務必保留此出處http://sublime.blog.51cto.com/8856101/1538989