java while跳过_while循环、break跳出循环、continue结束本次循环、exit退出整个脚本...

while循环

语法 while 条件; do … ; done

脚本案例一:

需求:每隔半分钟检查系统负载,当系统负载大于10的时候就发一封邮件告警。最小单元是任务计划 cron 脚本示例:

[root@garytao-01 aming]# vi while1.sh

[root@garytao-01 aming]# cat while1.sh

#!/bin/bash

while true

# 冒号 : 表示死循环的意思,或者1,或者 true都是死循环

do

load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`

if [ $load -gt 10 ]

then

/usr/local/sbin/mail.py xxx@qq.com "load high" "$load"

fi

sleep 30

#休眠30秒,因为检查系统负载,不需要一直去检查,过一会再看

done

[root@garytao-01 aming]# sh -x while1.sh

+ true

++ w

++ head -1

++ awk -F 'load average: ' '{print $2}'

++ cut -d. -f1

+ load=0

+ '[' 0 -gt 10 ']'

+ sleep 30

+ true

++ w

++ head -1

++ awk -F 'load average: ' '{print $2}'

++ cut -d. -f1

+ load=0

+ '[' 0 -gt 10 ']'

+ sleep 30

^C

[root@garytao-01 aming]#

#若想这种脚本不意外的终止,可以打开screen,在screen跑脚本

知识点:

w #查看系统负载 ;

uptime #可以直接显示 w 系统负载的第一行,就可以省去 head -1

head -1 #取第一行

awk -F 'load average: ' '{print $2}' # 以'load average: '分隔,输出第二段

cut -d . -f1 # 以 . 分隔 取第一段

脚本案例二:

需求:在循环过程过,需要用户去输入一个数字;输入的不是数字,是数字,输入为空;回应相应的结果。

[root@garytao-01 shell]# vim while2.sh

[root@garytao-01 shell]# cat while2.sh

#!/bin/bash

while :

do

read -p "Please input a number: " n

if [ -z "$n" ] #如果变量输入的为空

then

echo "you need input sth."

#你需要输入东西

continue

#continue 重新回到循环,变量为空时,再次重复执行任务

fi

n1=`echo $n|sed 's/[0-9]//g'`

#判断n是否为纯数字

if [ ! -z "$n1" ]

then

echo "you just only input numbers."

#你只能输入一个纯数字,如果不能纯数字,继续执行任务,如果是结束,退出循环

continue

fi

break

#break 退出循环

done

echo $n

[root@garytao-01 shell]# sh -x while2.sh

+ :

+ read -p 'Please input a number: ' n

Please input a number:

+ '[' -z '' ']'

+ echo 'you need input sth.'

you need input sth.

+ continue

+ :

+ read -p 'Please input a number: ' n

Please input a number: 23

+ '[' -z 23 ']'

++ echo 23

++ sed 's/[0-9]//g'

+ n1=

+ '[' '!' -z '' ']'

+ break

+ echo 23

23

break跳出循环

break 常用于循环语句中

跳出整个循环语句,直接结束所有循环

把整个循环退出

[root@garytao-01 aming]# vi break1.sh

[root@garytao-01 aming]# cat break1.sh

#!/bin/bash

for i in `seq 1 5`

do

echo $i

#输出i的值

if [ $i -eq 3 ]

#比较数字,用-eq ;若是比较的是字符串,那需要用 ==

then

break

fi

echo $i

done

echo aaaaa

[root@garytao-01 aming]# sh break1.sh

1

1

2

2

3

aaaaa

[root@garytao-01 aming]# sh -x break1.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

[root@garytao-01 aming]#

continue结束本次循环

忽略continue之下的代码,直接进行下一次循环

[root@garytao-01 aming]# vi continue.sh

[root@garytao-01 aming]# cat continue.sh

#!/bin/bash

for i in `seq 1 5`

do

echo $i

if [ $i -eq 3 ]

then

continue

fi

echo $i

done

echo aaaaa

[root@garytao-01 aming]# sh continue.sh

1

1

2

2

3

4

4

5

5

aaaaa

[root@garytao-01 aming]# sh -x continue.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 ']'

+ continue

+ for i in '`seq 1 5`'

+ echo 4

4

+ '[' 4 -eq 3 ']'

+ echo 4

4

+ for i in '`seq 1 5`'

+ echo 5

5

+ '[' 5 -eq 3 ']'

+ echo 5

5

+ echo aaaaa

aaaaa

[root@garytao-01 aming]#

exit退出整个脚本

直接退出整个脚本,脚本示例

可以定义退出的数值,可以用于确定脚本运行到什么地方的时候,结束

[root@garytao-01 aming]# vi exit.sh

[root@garytao-01 aming]# cat exit.sh

#!/bin/bash

for i in `seq 1 5`

do

echo $i

if [ $i -eq 3 ]

then

exit

fi

echo $i

done

echo aaaaa

[root@garytao-01 aming]# sh exit.sh

1

1

2

2

3

[root@garytao-01 aming]# sh -x exit.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 ']'

+ exit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值