Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Shell 循环语句用法小结

在写shell脚本时,常常会用到循环语句。这里简单总结下常用的3种循环语句,以便以后能快速地参考写出【哎,最近脑子不太好使了,在多种语言交叉编程时,常常切换不过来,犯低级错误】,废话不说,开始demo:

1、for 主要用于:在已知序列里遍历元素[plain]
  1. #! /bin/sh -  
  2.   
  3. if [ $# -ge 1 ]; then  
  4.         path=$@  
  5. else  
  6.         path=*.sh  
  7. fi  
  8.   
  9. for i in $path  
  10. do  
  11.         ls -lh $i  
  12. done  
注意:for循环的in列表时可选的,如果省略,shell会遍历整个命令行参数,此时  for i  相当于 for i in "$@"
再给一个for的用法示例:[plain]
  1. #! /bin/sh -  
  2.   
  3. for i in `seq 1 9`  
  4. do  
  5.         echo $i  
  6. done  
注意:for in 可以和 `` 与 $() 合用,上面的for i in `seq 1 9`  也等价与 for i in $(seq 1 9)再给一个for的用法示例:[plain]
  1. #! /bin/sh -  
  2.   
  3. for i in {a..z}  
  4. do  
  5.         echo $i  
  6. done  
注意:for in 的大括号{}具有自动补齐功能,大括号与要补齐的内容之间不能有空格,要补齐的内容首尾由两个..相连,其间不能有空格 再给个for的用法示例:[plain]
  1. #! /bin/sh -  
  2.   
  3. for (( i=1; i<=10; i++ ))  
  4. do  
  5.         echo $i  
  6. done  
提醒:这个主要是用了(())


2、while 主要用于:当某条件成立时,一直执行
[plain]
  1. #! /bin/sh -  
  2.   
  3. cnt=9  
  4.   
  5. while [ $cnt -ge  0 ]  
  6. do  
  7.    echo  $((cnt--))  
  8. done  

  注意:1、算术运算,需要放在$(()) 的括号中      2、对于变量的算术运算,在$(())中,变量前面不需要$
3、unitl主要用于:当某条件成立时,停止执行
[plain]
  1. #! /bin/sh -  
  2.   
  3. cnt=9  
  4. until [ $cnt -lt 0 ]  
  5. do  
  6.         echo $cnt  
  7.         cnt=$((cnt - 1))  
  8. done  
       注意:给变量赋值时,前面不要加$
      判断语句,可以参考 Shell case语句用法小结 (见 http://www.linuxidc.com/Linux/2012-02/54385.htm )与 Shell if语句用法小结 (见 http://www.linuxidc.com/Linux/2012-02/54343.htm )