SHELL流程控制之循环

当进行脚本编程时,语句执行的流程控制通常有三种:

顺序执行

选择执行

循环执行

 blob.pngblob.pngblob.png

条件选择if

if语句可以进行嵌套

if 判断条件;then

         条件为真的分支代码

elif  判断条件;then

         条件为真的分支代码

elif  判断条件;then

条件为真的分支代码

         else

         以上情况都不符合的处理代码

fi

blob.png

逐条件进行判断,当第一次遇到为条件时,执行其分支,结束整个if语句

        

case 变量引用 in

case1)

    分支

     ;;

case2)

    分支

     ;;

*)

   默认分支

     ;;

esac

blob.png


case支持glob风格的通配符

* 支持长度任意字符

? 任意单个字符

[] 指定范围内的任意单个字符

a|b  ab

 

循环执行

  将某段代码重复运行多次

  重复运行多少次:

     循环次数事先已知

     循环次数事先未知

  有进入和退出条件

 

for循环

  for 变量名 in 列表:do

    循环体

done

blob.png

 

列表生成方式

1)         直接给出列表

2)         整数列表

a)         {start,end}

b)         $(seq [start,[step]] end)

3)         返回列表的命令

$(command)

4)         使用glob  *.sh

5)         变量引用

$@  $*

 

 

while循环

    while  condition; do

       循环体

    done

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

进入条件: condition true

推出条件: condition false

 blob.png


until循环

until condition ; do

    循环体

done

进入条件: condition false

退出条件: condition true

 blob.png


循环控制语句

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

while condition1;do

   cmd1

    …

   If condition2;then

       continue

   fi

   cmdn

   …

done

 

break

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

while condition1;do

   cmd1

   …

   if condition2;then

   break

   fi

   cmdn

   …

done

习题

1、判断/var/目录下所有文件的类型

blob.png

blob.png

2、添加10个用户user1-user10,密码同用户名

blob.pngblob.png

blob.png

3、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的文件输出为文件加  stop,以S开头的文件输出为文件名加start;

 “K34filename stop”

 “S66filename start”

blob.pngblob.png

4、写一个脚本,提示输入正整数n的值,计算1+2+3+…n的总和

blob.png

blob.png


5、写一个脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态

fping -a -g 192.168.0.0/24 2>/dev/null

blob.png

blob.png


6、打印九九乘法表

blob.pngblob.pngblob.png

7、求100以内所有正整数之和

blob.png

8、通过ping命令探测172.16.250.1-254范围内的所有主机的在线状态,统计在线主机和离线主机各多少。

blob.pngblob.png

9、利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大者和最小者

blob.png

10、打印国际象棋棋盘

blob.pngblob.png


blob.pngblob.pngblob.png


原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/36987

(0)
Stupid_LStupid_L
上一篇 2016-08-18 15:20
下一篇 2016-08-18 15:20

相关推荐

  • 推荐-MySQL存储日志并使用Loganalyzer作为前端展示

    MySQL存储日志并使用Loganalyzer作为前端展示 MySQL存储日志并使用Loganalyzer作为前端展示 为什么要使用日志 本文目标 实验拓扑图 实验环境 实验步骤 syslog主机上rsyslog设置 Server1主机上rsyslog设置 Web服务器配置 总结 为什么要使用日志 在生产环境中我们可能需要一个较为完整的日志系统来查看运行中主…

    Linux干货 2016-03-30
  • linux发展史

    通过本篇文章,读者可以了解Linux的基本概念、历史、发展情况; 首先,我们通过简单的介绍Linux,了解什么是linux以及它的发展背景; 前言:操作系统介绍 内核负责控制硬件资源分配,而如果只有内核,则只能让计算机硬件运行,而不能有任何功能,因此需要系统调用提供给开发者使用,从而开发应用程序; 内核能够控制硬件,比如:让CPU可以运算、让硬盘可以读写数据…

    Linux干货 2016-10-14
  • 实验:配置静态路由1

    实验:配置静态路由1 IP地址规划如下: 注意,环境准备: 1、MAC地址不要有冲突,如果是复制的虚拟机,对于centos6需删除网卡定义文件rm -f /etc/udev/rules.d/70-persistent-net.rules 2、清空防火墙iptables -F(查看:iptables -vnL) 3、启用IP转发功能:echo 1 > /…

    2017-03-26
  • 总考十分的学习宣言

    目标:按照学习线路图完成所有视频的学习,完成每一次的博客作业及云学堂考试,成功转型互联网运维。 宣言:我一定要转型互联网运维工程师,并在这个领域不断坚持耕耘下去,成为行业的专家,拿高薪,挣so much money,可以有钱去看看世界,去台湾环岛,去日本爬天空树,去北欧看极光,去南极看企鹅,去看盐湖和大象,去非洲看动物迁徙。一生的时间是有限的,在有限的时间里…

    Linux干货 2016-10-24
  • N25 the second week

    1.文件管理命令 1.1.cat concatenate files and print on the standard output # 正序打印文件 cat [OPTION]… [FILE]… # 常用参数 -n 编号显示每行 -E 显示每行的结束符 1.2.tac concatenat…

    Linux干货 2016-12-19
  • 闲玩Xen

    简述理论 虚拟化的实现 模拟技术:模拟计算机的主要硬件硬件并协调工作,但是效率很低下,所以不常用 完全虚拟化:针对cpu的虚拟来分为,基于BT技术(Guset的特权指令在ring1,Host的特权指令在ring0,Guest的特权指令由Host的ring0来参与边翻译边执行)的完全虚拟化,基于HVM(硬件辅助,Guest的特权指令在ring0,Host的特权…

    Linux干货 2016-09-26