开发者俱乐部

标题: shell教程之八 循环 [打印本页]

作者: ismeng    时间: 2016-3-13 15:17
标题: shell教程之八 循环

[size=1.166em]Bash 和其他 shell 语言有 3 种循环结构,与 C 语言中的循环结构比较相似。每种循环执行一个命令列表 0 次或更多次。命令列表放在单词
do[size=1.166em]和done[size=1.166em]之间,每个命令前都有一个分号。
[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


复制代码









欢迎光临 开发者俱乐部 (http://xodn.com/) Powered by Discuz! X3.2