Shell学习(while,break,continue,exit)-2018.12.26

11.while循环

  • 语法:while 条件;do ...; done
  • 案例1
#!/bin/bash
while :           #冒号表示死循环,while为真,也可以写成1或者true
do
    load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d . -f1`    #这条命令会把系统的负载复制到load变量里,w查看登陆的人员
    if [ $load -gt 10 ]
    then
        top | mail -s "load is high: $load" asldkfls@11.com
    fi
    sleep 30
done

[root@Chauncey ~]# w
 15:37:29 up 6 days, 10 min,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    171.8.199.139    15:17    0.00s  0.04s  0.00s w
[root@Chauncey ~]# uptime        #当前时间,系统已经运行了多久,多少用户连接目前正在使用系统,系统在过去1,5,15分钟内的平均负载。
 16:06:13 up 6 days, 39 min,  1 user,  load average: 0.00, 0.00, 0.00
[root@Chauncey ~]
 16:06:13 up 6 days, 39 min,  1 user,  load average: 0.00, 0.00, 0.00
[root@Chauncey ~]# 
[root@Chauncey ~]# uptime | awk -F 'load average:' '{print $2}'|cut -d . -f1|sed 's/ //'
0

12.while循环案例2

#!/bin/bash
while :
do
    read -p "Please input a number: " n
    if [ -z "$n" ]                     #-z检测是否为空,且为空
    then
        echo "you need input sth."
        continue                       #指继续执行上述的语句,再次循环
    fi
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ ! -z "$n1" ]
    then
        echo "you can only input a number"
        continue
    fi
    if [ -n "$n1" ]
    then
        echo "you just only input numbers."
        continue
    fi
    break                             #退出循环,没有break回济南如自循环
done
echo $n

13.break跳出循环

  • 把整个循环结束退出,不再循环
#!/bin/bash
for i in `seq 1 5`
do
    echo $i
    if [ $i == 3 ]        #比较数字时使用-eq,gt...,对字符串进行比较时,可以用“==”号
    then
        break             #跳出循环
    fi
    echo $i
done
echo aaaaaaa
[root@Chauncey ~]# sh -x break.sh 
++ seq 1 5
+ for i in '`seq 1 5 `'
+ echo

+ '[' 1 == 3 ']'
+ echo 1
1
+ for i in '`seq 1 5 `'
+ echo

+ '[' 2 == 3 ']'
+ echo 2
2
+ for i in '`seq 1 5 `'
+ echo

+ '[' 3 == 3 ']'
+ break
+ echo aaaaa
aaaaa

14.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@Chauncey ~]# sh -x break.sh 
++ seq 1 5
+ for i in '`seq 1 5 `'
+ echo

+ '[' 1 == 3 ']'
+ echo 1
1
+ for i in '`seq 1 5 `'
+ echo

+ '[' 2 == 3 ']'
+ echo 2
2
+ for i in '`seq 1 5 `'
+ echo

+ '[' 3 == 3 ']'
+ continue
+ for i in '`seq 1 5 `'
+ echo

+ '[' 4 == 3 ']'
+ echo 4
4
+ for i in '`seq 1 5 `'
+ echo

+ '[' 5 == 3 ']'
+ echo 5
5
+ echo aaaaa
aaaaa

15.exit退出整个脚本

  • 相对于break,exit直接退出,后边的语句不会执行
#!/bin/bash
for i in `seq 1 5`
do
    echo $i
    if [ $i == 3 ]
    then
        exit
    fi
    echo $i
done
echo aaaaaaa
[root@Chauncey ~]# sh -x break.sh 
++ seq 1 5
+ for i in '`seq 1 5 `'
+ echo

+ '[' 1 == 3 ']'
+ echo 1
1
+ for i in '`seq 1 5 `'
+ echo

+ '[' 2 == 3 ']'
+ echo 2
2
+ for i in '`seq 1 5 `'
+ echo

+ '[' 3 == 3 ']'
+ exit

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值