20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本

20.10 for循环
20.11/20.12 while循环
20.13 break跳出循环
20.14 continue结束本次循环

20.15 exit退出整个脚本


for循环

格式:

for  变量名  in 条件

do

command

done

示例:把1-5的数字相加

#!/bin/bash
number=0                ---设置number变量=0
for i in `seq 1 5`            ---设置i变量序列为1-5
do    
          number=$[$number+$i]        --再次让number赋值等于  number+i的值
done
echo $number                    显示总数


下图是执行过程

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本


示例:用在查找目录

#!/bin/bash
cd /etc/                --进入到目录

for a in `ls /etc/`            --设置变量a为 ls /etc/

do
   if [ -d $a ]            判断如果$a目录存在的话
then
   ls -d $a                ---显示出来
   fi

done

执行过程:

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本


while循环

语法格式

while  条件;

do

command

done

示例;查看系统负载

#!/bin/bash
while :
do
    load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`        --设置变量load
    if [ $load -gt 10 ]                            --如果负载大于0
    then
        /usr/bin/sbin/mail.py [email protected] "$load" "报警“     --发送邮件给用户(这里可以自己写一个发送邮件脚本)
    fi
    sleep 30                        --30秒后再次检查

done


关于load的变量分步解释:

w --查看负载

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本

head -1    ---显示第一行

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本

w|head -1|awk -F 'load average: ' '{print $2}'    ---load作分割 打印第二行         (即load为第一行)

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本

w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1   --以.(点)作分割,分割第一段

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本


break跳出循环

#!/bin/bash
for i in `seq 1 4`            --变量
do
echo $i
if [ $i -eq 3 ]                    --当i等于3
then
    break                        --跳出循环
fi
done
echo abcs        

执行过程:可以看到当i=3就跳出以下循环,直接运abc结束

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本


continue结束本次循环

#!/bin/bash
for i in `seq 1 4`
do
echo $i
if [ $i -eq 3 ]
then
continue
fi
echo $i
done

echo abcs

执行过程:可以看到一个3,就没了。continue仅仅跳出本次循环,继续下一次循环

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本


exit退出整个脚本

exit直接退出整个脚本

#!/bin/bash
for i in `seq 1 5`
do
    echo $i
    if [ $i == 3 ]
    then
        exit
    fi
    echo $i
done

echo aaaaaaa

执行过程:当i=3 直接退出脚本

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本