`
dengwenwei121
  • 浏览: 36098 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

Shell脚本之循环

 
阅读更多

Shell中有3中循环,分别是for,while,untiluntilwhile正好相反,前者条件为假则执行,后者条件为真时执行。基本和C语言中额循环没什么区别。只是语法上有些差异。



for循环

格式:

for var in word1 word2 ……

in

command

command

……

done



谈到循环,就不得不说$@变量,它代表该shell脚本的所有参数。所以,要写一个命令行中键入的所有参数的程序就应该向下面这样:

for arg in "$@"

do

echo $arg

done

说到$@就不得不说for循环的另一种形式,就是缺省参数

for var

in

command

command

……

done

上面的程序等价于:

for var in "$@"

in

command

command

……

done


下面的代码中,变量i在每次迭代的过程里都会保存一个字符,范围从a到z:

for i in {a..z}; do actions; done;

for 循环也可以采用C语言中的for循环格式。例如:

for (( i=0; i<10; i++))

{

commands;

}


until
循环

until很简单,只要记住它与while正好相反即可,即条件为假继续执行,条件为真,就跳出循环。



while循环

我们知道shell中的if语句结束标识是fi,与c语言相差很大。既然我们已经知道了for循环的形式,那while也就不难了,因为shell不能与它自己差别很大的。

while command1

do

command

command

……

done

示例:

1数到5的小程序

i=1

while[ "$i" -le 5 ]

do

echo$i

i=$((i + 1 ))

done

正如for循环中,我们穿插介绍了$@一样,讲到while循环,可以顺便介绍一下shift,因为while循环经常跟shift结合使用。shift命令使位置变量下移,即使得$1=$2,$2=$3,最后$#还要减少1,也就是说把第一个参数删除了,而且找不回来了。如果我们要写一个打印所有参数的程序,就因该向这样的:

while[ "$#" -ne 0 ]

do

echo"$1"

shift

done


breakcontinue

说到循环,肯定不能漏掉break和,continue,它们的作用和在C语言中一模一样,完。


Example

下面是一个综合的示例,用于打印从命令行输入的参数。

  1. #case1
  2. k=1
  3. echo"Case$k:"
  4. j=0
  5. foriin"$@"
  6. do
  7. j=$(($j+1))
  8. echo-e"$j\c"
  9. echo$i
  10. done
  11. #case2
  12. k=$(($k+1))
  13. echo
  14. echo"Case$k:"
  15. j=0
  16. fori
  17. do
  18. j=$(($j+1))
  19. echo-e"$j\c"
  20. echo$i
  21. done
  22. #case3
  23. #testcontinue
  24. k=$(($k+1))
  25. echo
  26. echo"Case$k:"
  27. j=0
  28. while[$j-lt$#]
  29. do
  30. j=$(($j+1))
  31. if[$j-eq3]
  32. then
  33. continue
  34. fi
  35. echo-e"$j\c"
  36. evalecho"\$$j"
  37. done
  38. #case4
  39. k=$(($k+1))
  40. echo
  41. echo"Case$k:"
  42. j=0
  43. until[$j-eq$#]
  44. do
  45. if[$j-eq3]
  46. then
  47. break
  48. fi
  49. j=$(($j+1))
  50. echo-e"$j\c"
  51. evalecho"\$$j"
  52. done


测试结果如下:


分享到:
评论

相关推荐

    shell脚本循环调度程序

    shell脚本循环调度程序,样例代码,直接就可以使用。

    shell脚本中的几种循环操作(附脚本)

    在写Shell脚本时,对于循环的几种写法,我想大家并不陌生。但若不是经常写,也会遗忘一些循环语法,或者只能够想起某一两种语法编写脚本。本脚本中总结了Shell中经常使用的几种循环操作。

    Shell脚本之无限循环的两种方法

    主要介绍了Shell脚本之无限循环的两种方法,本文直接给出代码实例,需要的朋友可以参考下

    Linux系统自动不停重启并计数的shell脚本

    Linux系统自动不停重启并计数的shell脚本

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二)

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二) shell中的if 单分支 if 条件测试 ;then 命令序列 fi 双分支 if 条件测试 ;then 命令序列1 else 命令序列2 fi 多分支 if 条件测试 ;...

    SHELL脚本练习 写一个脚本,利用循环计算10的阶乘

    SHELL脚本练习 写一个脚本,利用循环计算10的阶乘

    Shell脚本—判断循环

    shell 基础简单的循环判断语句, 闲的时候写的。

    常用shell 脚本,dos攻击防范,

    常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...

    Shell脚本专家指南

    《Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍且功能强大的shell实现解决方案,教会读者如何使用现有调试器调试shell脚本。全书分为3个部分:脚本技术基础、系统交互和高级技术、有用的脚本...

    提高内存使用率的shell脚本

    提高内存使用率的脚本

    shell脚本查看系统中的用户

    shell脚本 for循环输出系统用户列表只显示用户列,shell脚本 for循环输出系统用户列表只显示用户列

    shell脚本练习题

    高级shell脚本编程指南

    shell 内建命令,比如 test 与循环结构,也会给脚本添加强力的支持和增加灵活性.Shell脚本对于 管理系统任务和其它的重复工作的例程来说,表现的非常好,根本不需要那些华而不实的成熟 紧凑的程序语言.

    shell脚本编程.pdf

    我们在介绍标准输入和标准输出以及 w h i l e循环的时候已经几次遇到 的应用。我们学会 了如何发送邮件,如何构建一个菜单,不过 还有很多其他的用法。 本章将介绍以下内容: • 快速创建一个文件。 • 自动进入菜单...

    Linux Shell 脚本编程入门教程

    用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的...

    shell批量检测端口脚本

    批量检测端口并导出记录 附件中的telnet.sh为执行脚本 ip.txt为IP地址,端口在脚本中自定 实现多IP多端口 默认路径/root 上传到服务器默认路径下直接可以使用 运行完成后: log.txt为记录清单

    Shell脚本编程详解

    Shell脚本编程详解  Shell命令行的运行  编写、修改权限和执行Shell程序的步骤  在Shell程序中使用参数和变量  表达式比较、循环结构语句和条件结构语句  在Shell程序中使用函数和调用其他Shell程序

    shell脚本学习手册

    1、shell脚本 3 2、shell脚本实践 4 Shell变量 4 1、使用变量 5 2、只读变量 5 3、删除变量 5 4、变量类型 6 5、shell字符串 6 6、Shell数组 7 7、Shell注释 9 Shell传递参数 9 1、实例 9 Shell数组 11 Shell运算符 ...

    shell for循环、循环变量值付给其他shell脚本的方法

    今天小编就为大家分享一篇shell for循环、循环变量值付给其他shell脚本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics