for循环, while循环,break,continue,exit的用法

for循环

语法:for 变量名 in 条件; do …; done
案例1,求和
#!/bin/bash
sum=0
for i in seq 1 100
do
sum=$[$sum+$i]
echo $i
done
echo $sum
这是计算从1到100总和的脚本。
其中sum变量赋一个值为0,[$sum+$i]是赋值语句,做加减法,也是核心语句。这里中括号不用加空格

案例2,文件循环
文件列表循环
#!/bin/bash
cd /etc/
for a in ls /etc/
do
if [ -d $a ]
then
ls -d $a
fi
done
这是讲/etc/目录下的目录都查询一遍

有时候我们会遇到这种情况,在目录下有些文件名中有空格或者回车键,这样在写脚本的时候
for i in ‘ls ./’;do echo $i ; done
会出现以分隔符分割的文件名

while循环

语法 while 条件; do … ; done
案例1
#!/bin/bash
while :
do
load=w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1
if [ $load -gt 10 ]
then
/usr/lib/zabbix/alertscripts/mail.py 2008llt@163.com "load higt" "$load"
fi
sleep 30
done
这是一个监控脚本,这个脚本是每隔半分钟检查一下系统的负载,大于10的时候就发邮件给收件人。
其中while :是死循环的意思
load=w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1是将系统的负载赋值到load这个变量中。
它的意思是w,查看系统负载
head -1选取第一行
awk -F 'load average: ' '{print $2}'以load average:为分隔符,并且打印第二段
cut -d. -f1然后再以.为分隔符,打印第一段
/usr/lib/zabbix/alertscripts/mail.py 2008llt@163.com "load higt" "$load"发送邮件,第一段里面写主题,第二段中写内容。
sleep 30 间隔30秒

案例2
#!/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
这是让用户输入东西的脚本,如果输入不是系统想要的,那他就会不停的让你输入。这个脚本的重点是continue(继续重新执行)和break(退出脚本循环)

break跳出循环

#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i -eq 3 ](在这里,如果我们比较数字的话,我们需要用-eq去比较,如果是字符串,我们要用==去比较)
then
break
fi
echo $i
done
echo aaaaa
这个脚本的意思是如果当$i等于3的时候,就打印出aaaaa。
[root@linletao-001 shell]# sh -x break.sh
++ seq 1 5

  • for i in 'seq 1 5'
  • echo 1
    1
  • '[' 1 -eq 3 ']'
  • echo 1
    1
  • for i in 'seq 1 5'
  • echo 2
    2
  • '[' 2 -eq 3 ']'
  • echo 2
    2
  • for i in 'seq 1 5'
  • echo 3
    3
  • '[' 3 -eq 3 ']'
  • break
  • echo aaaaa
    aaaaa
    当匹配到3的时候,与条件相等。break跳出来,打印aaaaa

continue结束本次循环

忽略continue之下的代码,直接进行下一次循环
#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i == 3 ]
then
continue
fi
echo $i
done
echo $i
[root@linletao-001 shell]# sh break.sh
1
1
2
2
3
4
4
5
5
aaaaa
在匹配了条件后,它依然往下进行,这就是continux的作用。

exit退出整个脚本

#!/bin/bash
for i in seq 1 5
do
echo $i
if [ $i == 3 ]
then
exit(直接退出这个脚本)
fi
echo $i
done
echo $i
[root@linletao-001 shell]# sh exit.sh
1
1
2
2
3
满足条件见后自动退出,不再向下执行

转载于:https://blog.51cto.com/13067688/2122653

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值