免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4503 | 回复: 3
打印 上一主题 下一主题

Shell 循环语句用法小结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-16 23:13 |只看该作者 |倒序浏览
Shell 循环语句用法小结









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





1、for

         主要用于:在已知序列里遍历元素

  1. [plain] view plaincopyprint?#! /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  
  13. #! /bin/sh -

  14. if [ $# -ge 1 ]; then
  15.         path=$@
  16. else
  17.         path=*.sh
  18. fi

  19. for i in $path
  20. do
  21.         ls -lh $i
  22. done
复制代码
注意:for循环的in列表时可选的,如果省略,shell会遍历整个命令行参数,此时  for i  相当于 for i in "$@"




再给一个for的用法示例:
  1. [plain] view plaincopyprint?#! /bin/sh -  
  2.   
  3. for i in `seq 1 9`  
  4. do  
  5.         echo $i  
  6. done  
  7. #! /bin/sh -

  8. for i in `seq 1 9`
  9. do
  10.         echo $i
  11. done
复制代码
注意:for in 可以和 `` 与 $() 合用,上面的for i in `seq 1 9`  也等价与 for i in $(seq 1 9)


再给一个for的用法示例:
  1. [plain] view plaincopyprint?#! /bin/sh -  
  2.   
  3. for i in {a..z}  
  4. do  
  5.         echo $i  
  6. done  
  7. #! /bin/sh -

  8. for i in {a..z}
  9. do
  10.         echo $i
  11. done
复制代码
注意:for in 的大括号{}具有自动补齐功能,大括号与要补齐的内容之间不能有空格,要补齐的内容首尾由两个..相连,其间不能有空格

再给个for的用法示例:

  1. [plain] view plaincopyprint?#! /bin/sh -  
  2.   
  3. for (( i=1; i<=10; i++ ))  
  4. do  
  5.         echo $i  
  6. done  
  7. #! /bin/sh -

  8. for (( i=1; i<=10; i++ ))
  9. do
  10.         echo $i
  11. done
复制代码
提醒:这个主要是用了(())




2、while

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

  10. cnt=9

  11. while [ $cnt -ge  0 ]
  12. do
  13.    echo  $((cnt--))
  14. done
复制代码
注意:1、算术运算,需要放在$(()) 的括号中

      2、对于变量的算术运算,在$(())中,变量前面不需要$




3、unitl

主要用于:当某条件成立时,停止执行

  1. [plain] view plaincopyprint?#! /bin/sh -  
  2.   
  3. cnt=9  
  4. until [ $cnt -lt 0 ]  
  5. do  
  6.         echo $cnt  
  7.         cnt=$((cnt - 1))  
  8. done  
  9. #! /bin/sh -

  10. cnt=9
  11. until [ $cnt -lt 0 ]
  12. do
  13.         echo $cnt
  14.         cnt=$((cnt - 1))
  15. done
复制代码
注意:给变量赋值时,前面不要加$




      判断语句,可以参考以前的blog:case语句用法小结 和 if语句用法小结

论坛徽章:
0
2 [报告]
发表于 2012-02-16 23:13 |只看该作者
谢谢分享

论坛徽章:
0
3 [报告]
发表于 2012-02-27 21:57 |只看该作者
我是初学者 要是能把几个常用的循环语句都总结下就更好了 呵呵 多谢分享

论坛徽章:
0
4 [报告]
发表于 2012-03-03 18:49 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP