设为首页 收藏本站
查看: 1261|回复: 0

Shell笔记7——while和until循环的应用实践

[复制链接]

尚未签到

发表于 2018-8-22 11:33:57 | 显示全部楼层 |阅读模式
  本文主要讲解Shell脚本开发中while和until循环的知识与实践
  基本大纲:
  1.当型和直到型循环语法
  2.当型和直到型循环的基本范例
  3.shell脚本在后台运行的知识
  4.while循环按行读文件的方式总结
  5.while循环语句生产实践
  一:当型和直到型循环语法
  循环语句命令常用于重复执行一条指令或一组指令,直到条件不再满足时停止,Shell脚本语言的循环语句常见的有while、until、for、及select循环语句。
  while循环语句主要用来重复执行一组命令或语句,在企业实际应用中,常用于守护进程或持续运行的程序。
  1.while循环语句的基本语法为:
  while   
  do
  指令...
  done
  注:while循环语句会对紧跟在while命令后的条件表达式进行判断,如果该条件表达式成立,则执行while循环体里的命令或语句(即语法中do和done之间的指令),每一次执行到done时就会重新判断while条件表达式是否成立,知道条件表达式不成立时才会跳出while循环体。如果一开始条件表达式就不成立,那么程序就不会进入循环体(即语法中do和done之间的部分)中执行命令了。
  2.until循环语句的语法为:
  until   
  do
  指令...
  done
  注:until循环语句的用法与while循环语句的用法类似,区别是until会在条件表达式不成立时,进入循环执行指令;条件表达式成立时,终止循环。
  二:当型和直到型循环的基本范例
  范例1:每隔5秒输出一次系统负载(负载是系统性能的基础重要指标)情况。
[root@aliyun xh]# cat while.sh  
#!/bin/bash
  
while true         #while true表示条件永远为真,因此会一直运行,像死循环一样,我们称之为守护进程
  
do
  
    uptime
  
    sleep 5        #休息5秒后继续循环,控制循环的频率
  
done
  
[root@aliyun xh]# sh while.sh
  
04:00:01 up 52 days,  5:44,  2 users,  load average: 0.64, 0.75, 1.83
  
04:00:06 up 52 days,  5:45,  2 users,  load average: 0.67, 0.75, 1.83
  范例2:将负载值追加到文件里
[root@aliyun xh]# cat while.sh  
#!/bin/bash
  
while [ 1 ]        #注意[ ]里面两端要有空格,true和1都表示条件永远成立
  
do
  
    uptime >>/tmp/uptime.log    #将负载值输入到log文件里
  
    usleep 5000000              #单位为微秒,其实就是5秒
  
done
  
[root@aliyun xh]# sh while.sh &
  
[1] 15782
  
[root@aliyun xh]# tailf /tmp/uptime.log         #使用tailf命令实时观察输出结果
  
04:10:37 up 52 days,  5:55,  2 users,  load average: 0.60, 0.63, 1.22
  
04:10:42 up 52 days,  5:55,  2 users,  load average: 0.63, 0.64, 1.22
  
04:10:47 up 52 days,  5:55,  2 users,  load average: 0.90, 0.69, 1.23
  
04:10:52 up 52 days,  5:55,  2 users,  load average: 0.91, 0.70, 1.23
  范例3:计算从1加到100之和(用1+2+3+...+100的方法)
[root@aliyun xh]# cat jisuan.sh  
#!/bin/bash
  
i=1
  
sum=0
  
while ((i

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-555079-1-1.html 上篇帖子: (石头、剪刀、布)shell脚本,随机对比,case的应用 下篇帖子: shell脚本 for循环、break跳出循环、continue结束本次循环
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表