首页 > 代码库 > Shell脚本-----while循环和until循环
Shell脚本-----while循环和until循环
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/bash file=/etc/passwd while read line read 会自动将$file这个文件中的每一行,将读取的每一行的值付给$line do 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" fi done < $file
列子:将用户输入的字符转换成大写,字符quit退出脚本
#!/bin/bash
read -p "A string:" string while [ "$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/bash until who | grep "^hadoop" &> /dev/null do echo "$(date) hadoop not login" sleep 5done dong 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/bash cat << EOF d|D) show disk usages m|M) show memory usages s|S) show swap usages *)quit EOFread -p "Please Input Device :" usages until [ "$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 ;; esac dong
本文出自 “悬剑” 博客,请务必保留此出处http://sublime.blog.51cto.com/8856101/1538989