Shell脚本中也算是一门简易的编程语言了,当然循环是不能缺少的。常用到的循环有for循环和while循环。下面就分别介绍一下两种循环的结构。
【for循环】:
Shell脚本中的for循环示例:
#! /bin/bash
## author:Xiong Xuehao
## Use for in this script.
for i in `seq 1 5`; do
echo $i
done
脚本中的seq 1 5 表示从1到5的一个序列。你可以直接运行这个命令试下。脚本执行结果为:
通过这个脚本就可以看到for循环的基本结构:
for 变量名 in 循环的条件; do
command
done
for i in `ls`; do echo $i; done 和 for i in `cat test.txt`; do echo $i; done
【while循环】:
再来看看这个while循环,基本格式为:
while 条件; do
command
done
#! /bin/bash
## author:Xiong Xuehao
## Use while in this script.
a=10
while [ $a -ge 1 ];do
echo $a
a=$[$a-1]
done
脚本的执行结果为:
另外你可以把循环条件忽略掉,笔者常常这样写监控脚本。
while :; do
command
done
示例:
#! /bin/bash
## author:Xiong Xuehao
## Monitoring alarm.
while :
do
load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
if [ $load -gt 10 ]
then
/usr/local/sbin/mail.py xxxxxxxxxx@qq.com "load high" "$load"
fi
sleep 30
done
Shell脚本(for循环,while循环里面使用 break跳出循环,continue结束本次循环)
在看脚本之前,我们需要知道continue和break的意思:
continue是继续的意思,也就是当运行结果不满足条件时,在从头循环一遍。(通俗理解是:跳过本次循环剩余部分,直接开始下一轮循环)
break是跳出循环的意思。(通俗理解是退出整个循环)。
注意break、continue仅在`for', `while', 或者`until' 循环中有意义。
下面先来看for循环中使用break的例子:有5个人参加抢答游戏,但是只有3个名额剩余的都淘汰。从1,2,3,4,5报数,数到3时结束。
#! /bin/bash
## author:Xiong Xuehao
## 循环语句里面的continue和break.
for i in `seq 1 5`; do
echo -n "$i"
if [ $i -ge 3 ]; then
echo "名额满了,剩下的都离开吧"
break
else
echo "继续"
fi
done
如图:
下面来看for循环中使用continue的例子:有5个人参加抢答游戏,前两名2个名额,迟到的都罚站。从1,2,3,4,5报数,从第3名开始及以后的都罚站。
#! /bin/bash
## author:Xiong Xuehao
## 循环语句里面的continue和break.
for i in `seq 1 5`; do
echo -n "$i"
if [ $i -ge 3 ]; then
echo "迟到了,罚站"
continue
else
echo "继续"
fi
done
如图:
上面两个例子注意看区别哦。
再看一个for循环的脚本,将break个continue结合起来使用的例子:
要求输入一个数字,如果输入内容不是数字返回一个字符串提醒,如果输入为空也返回一个字符串提醒,如果是输入数字则将该数字显示出来。
#! /bin/bash
## author:Xiong Xuehao
## 循环语句里面的continue和break.
while :
do
read -p "please input a number: " n
if [ -z "$n" ]
then
echo "提醒,你需要输入内容."
continue
fi
n1=`echo $n|sed 's/[0-9]//g'`
if [ ! -z "$n1" ]
then
echo "输入错误,你只能输入一个纯数字."
continue
fi
break
done
echo $n
执行如图:
【完】