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的一个序列。你可以直接运行这个命令试下。脚本执行结果为:

shell脚本循环执行mysql 删除 shell脚本中循环_for循环

  通过这个脚本就可以看到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

脚本的执行结果为:

shell脚本循环执行mysql 删除 shell脚本中循环_while循环_02

 另外你可以把循环条件忽略掉,笔者常常这样写监控脚本。

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

如图:

shell脚本循环执行mysql 删除 shell脚本中循环_while循环_03

  

      下面来看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

如图:

 

shell脚本循环执行mysql 删除 shell脚本中循环_for循环_04

  上面两个例子注意看区别哦。

 

再看一个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

执行如图:

shell脚本循环执行mysql 删除 shell脚本中循环_for循环_05

 【完】