首页 Shell教程shell循环

shell信号捕捉脚本

shell函数

运维派是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai

循环

循环执行介绍

shell循环插图

将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件

重复运行次数

  • 循环次数事先已知
  • 循环次数事先未知

常见的循环的命令:for, while, until

shell循环插图(1)

for循环

格式1:

执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

for循环列表生成方式:

  • 直接给出列表
  • 整数列表:

  • 返回列表的命令:

  • 使用glob,如:*.sh
  • 变量引用,如:$@,$#

范例: 九九乘法表

范例:生产案例

范例:M37期面试题,要求将目录YYYY-MM-DD/中所有文件,移动到YYYY-MM/DD/下

格式2

双小括号方法,即((…))格式,也可以用于算术运算,双小括号方法也可以使bash Shell实现C语言风格的变量操作 I=10;((I++))

说明:

  • 控制变量初始化:仅在运行到循环代码段时执行一次
  • 控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断

范例:

范例:九九乘法表

练习:用 for 实现 1、判断/var/目录下所有文件的类型 2、添加10个用户user1-user10,密码为8位随机字符 3、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的输出为文件加stop,以S开头的输出为文件名加start,如K34filename stop S66filename start 4、编写脚本,提示输入正整数n的值,计算1+2+…+n的总和 5、计算100以内所有能被3整除的整数之和 6、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态 7、打印九九乘法表 8、在/testdir目录下创建10个html文件,文件名格式为数字N(从1到10)加随机8个字母,如:1AbCdeFgH.html 9、打印等腰三角形 10、猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。求第一天共摘了多少?

 while循环

格式:

说明:

CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环,因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正 进入条件:CONDITION为true 退出条件:CONDITION为false

范例:

练习:用while实现 1、编写脚本,求100以内所有正奇数之和 2、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态,并统计在线和离线主机各多少 3、编写脚本,打印九九乘法表 4、编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大值和最小值 5、编写脚本,实现打印国际象棋棋盘 6、后续六个字符串:efbaf275cd、4be9c40b8b、44b2395c46、f8c8873ce0、b902c16c8b、ad865d2f63是通过对随机数变量RANDOM随机执行命令: echo $RANDOM|md5sum|cut –c1-10 后的结果,请破解这些字符串对应的RANDOM值

无限循环

until循环

格式:

说明:

进入条件: CONDITION 为false 退出条件: CONDITION 为true

无限循环

循环控制语句 continue

continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第1层

格式:

范例:

循环控制语句 break

break [N]:提前结束第N层整个循环,最内层为第1层

格式:

范例:

范例:

范例:

循环控制 shift 命令

shift [n] 用于将参量列表 list 左移指定次数,缺省为左移一次。 参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环遍历位置参量列表时,常用到 shift

范例:doit.sh

范例:示例:shift.sh

范例:

练习 1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并退出脚本 2、随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出 3、用文件名做为参数,统计所有参数文件的总行数 4、用二个以上的数字为参数,显示其中的最大值和最小值

while read 特殊用法

while 循环的特殊用法,遍历文件或文本的每一行

格式:

说明:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

范例:

范例:

范例:

范例:

select 循环与菜单

格式:

说明:

  • select 循环主要用于创建菜单,按数字顺序排列的菜单项显示在标准错误上,并显示 PS3 提示符,等待用户输入
  • 用户输入菜单列表中的某个数字,执行相应的命令
  • 用户输入被保存在内置变量 REPLY 中
  • select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 命令终止脚本。也可以按 ctrl+c 退出循环
  • select 经常和 case 联合使用
  • 与 for 循环类似,可以省略 in list,此时使用位置参量

范例:

本文链接:http://www.yunweipai.com/34342.html

shell信号捕捉脚本

shell函数

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部