Shell中的while循环

标签: Shell中的while循环
9人阅读 评论(0) 收藏 举报
分类:
原文地址:https://blog.csdn.net/huangyimo/article/details/79930318

流控制:while循环

在编程语言中,循环非常常见。在bash中,bash也有类似的关键字,构建这样的循环:

  1. #!/bin/bash  
  2.   
  3. # 显示一系列数字  
  4.   
  5. count=1  
  6.   
  7. while [ $count -le 6 ]; do  
  8.     echo $count  
  9.     count=$((count + 1))  
  10. done  
  11. echo "finished"  

执行脚本:./while-count.sh,结果如下:

  1. [fbap:/home/fbap/usertmp]>./while-count.sh  
  2. 1  
  3. 2  
  4. 3  
  5. 4  
  6. 5  
  7. 6  
  8. finished  

就如同if指令一样,while会判断一系列指令的退出状态。只要退出状态为0,它就执行循环体内的命令。在上述循环中,我们创建了count变量并进行了初始化,while命令会判断test命令的退出状态,只要为0,那门循环体内的指令就会执行(打印count变量,并且count加1)。

下面有一个使用while循环更加高级的一个例子:

  1. #!/bin/bash  
  2.   
  3. #  
  4. # 一个菜单驱动的展示系统信息的脚本  
  5. #  
  6.   
  7. # 展示结果的延迟时间(单位/秒)  
  8. DELAY=3  
  9.   
  10. while [[ "$REPLY" != "0" ]]; do  
  11.     clear  
  12.     cat <<EOF  
  13. ----------------------------  
  14. 请选择:  
  15.     1.显示系统信息  
  16.     2.显示磁盘使用情况  
  17.     3.显示用户空间使用情况  
  18.     0.退出  
  19. ----------------------------  
  20. EOF  
  21.     read -p "请输入你的选择[0-3]:"  
  22.     if [[ $REPLY =~ ^[0-3]$ ]];then  
  23.   
  24.         # 显示系统使用情况  
  25.         if [[ "$REPLY" = "1" ]];then  
  26.             echo  
  27.             echo "主机名:${HOSTNAME}"  
  28.             uptime  
  29.             sleep $DELAY  
  30.         fi  
  31.   
  32.         # 显示磁盘使用情况  
  33.         if [[ "$REPLY" = "2" ]];then  
  34.             df -h  
  35.             sleep $DELAY  
  36.         fi  
  37.   
  38.         # 显示用户空间使用情况  
  39.         if [[ "$REPLY" = "3" ]];then  
  40.             # 判定有效用户是否为root  
  41.             if [[ $(id -u) -eq 0 ]];then  
  42.                 echo  
  43.                 echo "(所有用户)用户空间使用情况:"  
  44.                 du -sh /home/*  
  45.             else  
  46.                 echo  
  47.                 echo "(${USER})用户空间使用情况:"  
  48.                 du -sh $HOME  
  49.             fi  
  50.             sleep $DELAY  
  51.         fi  
  52.     else  
  53.         echo "非法输入"  
  54.         sleep $DELAY  
  55.     fi  
  56. done  
  57. echo "脚本退出"  

执行脚本:./read-menu.sh,输出:

  1. ----------------------------  
  2. 请选择:  
  3.     1.显示系统信息  
  4.     2.显示磁盘使用情况  
  5.     3.显示用户空间使用情况  
  6.     0.退出  
  7. ----------------------------  
  8. 请输入你的选择[0-3]:1  
  9.   
  10. 主机名:localhost.localdomain  
  11.  17:28:28 up 333 days, 44 min, 10 users,  load average: 1.04, 1.06, 1.17  
在上面的例子中,将菜单封装在while循环内,程序就可以在用户每次选择后重复展示菜单项。只要REPLY值不为0,重复循环,展示菜单项,给用户又一次的选择机会。而在每次动作结束时,系统执行sleep命令使程序暂停几秒,让用户看到选择执行的结果,随后清空屏幕显示并再次显示菜单。
查看评论

shell中的while循环

shell中的while循环
  • ixiaoyou
  • ixiaoyou
  • 2018-01-24 15:00:52
  • 115

SHELL中的while循环

流控制:while循环在编程语言中,循环非常常见。在bash中,bash也有类似的关键字,构建这样的循环:#!/bin/bash# 显示一系列数字count=1while [ $count -le 6...
  • like_LeafFlying
  • like_LeafFlying
  • 2017-05-17 08:56:19
  • 17297

shell脚本while循环实例

shell脚本while循环实例:计算1到100的和 #!/bin/bash #上一行的意思是声明这个script使用的是shell名称,符号#!组合意思是声明shell符号#是用来注释的...
  • lzhj2g
  • lzhj2g
  • 2015-01-03 18:56:44
  • 2022

Linux Shell系列教程之(十一)Shell while循环

本文是Linux Shell系列教程的第(十一)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇Linux Shell系列教程之(十)Shell for循环中,我...
  • u010394032
  • u010394032
  • 2016-09-13 15:48:39
  • 6832

linux基本操作---shell编程之 while循环

java中我们经常用到while循环,那么shell中也有while循环:while简单循环直接看demo:demo1: 求1-10的和[root@dev-02 software]# cat whil...
  • zhangshk_
  • zhangshk_
  • 2017-12-13 16:07:42
  • 151

Shell脚本基础16-while循环中使用sleep命令

本文继续练习while循环语句,这里要介绍一个sleep的命令。如果写过自动化脚本,特别是selenium的同学,肯定很熟悉这个sleep。没错,sleep就是暂停的意思,例如sleep 1,表示暂停...
  • u011541946
  • u011541946
  • 2017-05-23 21:24:58
  • 2042

Linux 下的 shell 编程之 while 循环

linux 下 while 循环中可以使用 break 和 continue 关键字来跳出循环, 和java 用法一致 一 循环结构: while [ 条件判断式 ] do 程...
  • zgf19930504
  • zgf19930504
  • 2016-07-14 19:16:05
  • 1832

Linux Shell 学习笔记(九)---for/while/util/跳出循环

for循环 与其他编程语言类似,Shell支持for循环。 for循环一般格式为: for 变量 in 列表 do command1 command2 ... commandN ...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2015-01-03 10:54:45
  • 6297

在shell中使用while循环的例子

#!/bin/sh #filename:2.sh b=9e=15tmpb=$bwhile [ $tmpb -le $e ]do  echo $tmpb   #tmpb=`expr $tmpb + 1`...
  • lllxy
  • lllxy
  • 2008-12-03 11:44:00
  • 20887

Shell变量while循环内改变无法传递到循环外

今天刷Leecode(192 Word frequency)时,遇到一个shell语法问题,记录下来。首先将题目描述和代码呈上   1 #!/bin/bash   2   3 # Write a ...
  • shawhe
  • shawhe
  • 2017-03-24 15:33:25
  • 2817
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 164万+
    积分: 2万+
    排名: 464
    博客专栏