•语法:for 变量名 in 条件; do …; doneshell
示例
计算1到100全部数字的和bash
#!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum
列出etc目录下的全部目录ide
#!/bin/bash cd /etc/ for a in `ls /etc/` do if [ -d $a ] then echo $a ls $a fi done
语法 while 条件; do … ; donecode
示例
每隔30秒检查系统的负载,若是大于10则发一封邮件input
#!/bin/bash while true do load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1` if [ $load -gt 10 ] then /root/shell/mail.py m1796686653@qq.com "load high" "$load" fi sleep 30 done
while true 判断是否为真,这样能够写一个死循环的脚本it
w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1
w是系统负载的命令
head -1 取命令结果的第一行
|awk -F 'load average: ' '{print $2} 指定分隔符为load average,取第二段
cut -d. -f1 指定分隔符为 “ . ”,取第1段for循环
if [ $load -gt -1 ] 判断load是否大于10,若是大于10那么执行下面的语句,这是一个发邮件的脚本class
sleep 30 执行后休眠30秒再执行awk
让用户输入一个数字,直到正确为止变量
#!/bin/bash while : do read -p "Please input a number: " n if [ -z "$n" ] then echo "you need input sth." continue fi n1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] then echo "you just only input numbers." continue fi break done echo $n
输入一个数字,
当为正确的数字时break跳出循环
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then break fi echo $i done echo ok
脚本运行结果
[root@yang shell]# sh br.sh 1 1 2 2 3 ok
continue结束本次循环
!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then continue fi echo $i done echo ok
脚本运行结果
[root@yang shell]# sh co.sh 1 1 2 2 3 4 4 5 5 ok
exit退出脚本
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then exit fi echo $i done echo ok
脚本运行结果
[root@yang shell]# sh ex.sh 1 1 2 2 3