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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 [email protected] "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 [email protected] "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。
[[email protected] 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
[[email protected] 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
[[email protected] shell]# sh exit.sh
1
1
2
2
3
满足条件见后自动退出,不再向下执行

以上是关于for循环, while循环,break,continue,exit的用法的主要内容,如果未能解决你的问题,请参考以下文章

python之while与for循环,break与continue

六十九for循环while循环break跳出循环continue结束本次循环exit退出整

一文了解Python中的循环(for while break continue 嵌套循环...)

Java初学者:continue和break

while与do while 区别 for循环的简介及break和continue的区别

70.for循环while循环break跳出循环continue结束本次循环exit