新技术论坛
搜索
查看: 616|回复: 0
打印 上一主题 下一主题

shell教程之八 循环

[复制链接]
  • TA的每日心情

    2016-7-1 19:50
  • 签到天数: 81 天

    连续签到: 1 天

    [LV.6]常住居民II

    扫一扫,手机访问本帖
    楼主
    跳转到指定楼层
    发表于 2016-3-13 15:17:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    [size=1.166em]Bash 和其他 shell 语言有 3 种循环结构,与 C 语言中的循环结构比较相似。每种循环执行一个命令列表 0 次或更多次。命令列表放在单词
    do[size=1.166em]和done[size=1.166em]之间,每个命令前都有一个分号。
    • for
    • for循环有两种形式。shell 脚本中的最常用的形式是迭代一组值,对每个值执行命令列表一次。这组值可能是空的,在这种情况下,不会执行命令列表。另一种形式更加类似于传统的 C for循环,它使用 3 个算术表达式来控制开始条件、步进函数和结束条件。
    • while
    • while循环该循环每次开始时计算一个条件,如果条件为 true,则执行命令列表。如果该条件最初不为 true,则从不执行这些命令。
    • until
    • until循环执行命令列表并在每次循环结束时计算一个条件。如果条件为 true,则再执行该循环一次。即使条件最初不为 true,这些命令也会至少执行一次。
    [size=1.166em]测试的条件可以是一个命令列表。在这种情况下,将使用执行的 最后一个命令的返回值。清单 23演示了这些循环命令。
    清单 23. 简单的 for、while和 until循环
    1. ian@at:~$ for x in abd 2 "my stuff"; do echo $x; done
    2. abd
    3. 2
    4. my stuff
    5. ian@at:~$ for (( x=2; x<5; x++ )); do echo $x; done
    6. 2
    7. 3
    8. 4
    9. ian@at:~$ let x=3; while [ $x -ge 0 ] ; do echo $x ;let x--;done
    10. 3
    11. 2
    12. 1
    13. 0
    14. ian@at:~$ let x=3; until echo -e "x=\c"; (( x-- == 0 )) ; do echo $x ; done
    15. x=2
    16. x=1
    17. x=0
    复制代码

    [size=1.166em]这些示例虽然不太自然,但它们演示了这些概念。您通常希望迭代一个函数或 shell 脚本的参数,或者命令替换所创建的一个列表。
    break和 continue命令
    [size=1.166em]可以使用 break命令立即退出循环。如果您拥有嵌套循环,可以指定要分成的级别数。例如,如果您在一个 for内的另一个 for循环内有一个until循环,而它们都在一个 while循环内,则 break 3会立即终止 until循环和两个 for循环,并将控制权返回给 while循环中的下一个指令。
    [size=1.166em]可以使用 continue语句绕过命令列表中的剩余语句,直接转到循环的下一次迭代。 清单 26演示了 break和 continue的使用。
    清单 26. 使用 break和 continue
    1. ian@at:~$ for word in red blue green yellow violet; do
    2. > if [ "$word" = blue ]; then continue; fi
    3. > if [ "$word" = yellow ]; then break; fi
    4. > echo "$word"
    5. > done
    6. red
    7. green


    复制代码




    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    手机版|Archiver|开发者俱乐部 ( ICP/ISP证:辽B-2-4-20110106号 IDC证:辽B-1-2-20070003号 )

    GMT+8, 2025-1-9 07:01 , Processed in 0.106672 second(s), 22 queries .

    X+ Open Developer Network (xodn.com)

    © 2009-2017 沈阳讯网网络科技有限公司

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