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

相关推荐

  • Homework Week-2 Linux文件管理

    1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理工具:cp, mv, rm         cp命令:copy  源文件  目标文件                单源复制:cp [O…

    Linux干货 2016-08-22
  • BIND的编译安装\DNS的搭建及测试

    编译安装bind          1、下载bind: isc.org: bind-9.10 bind-9.11 bind-10          2、 #tar xvf bind-9.10.5.tar.gz       &nbs…

    2017-07-31
  • MogileFS基于Nginx反向代理实现分布式存储与访问

    前言 随着信息社会的发展,越来越多的信息被数据化,尤其是伴随着大数据时代的来临,数据呈爆炸式增长。传统存储在面对海量数据存储表现出的力不从心已经是不争的事实,例如:纵向扩展受阵列空间限制,横向扩展受交换设备限制,节点受文件系统限制等。而分布式存储的出现在一定程度上有效的缓解了这一问题,目前比较流行的分布式文件系统有:GFS、HDFS、GlusterFS、Mo…

    Linux干货 2015-07-08
  • nmcli命令使用,解析性能监控工具

    nmcli nmcli地址配置工具,NetworkManager client 网络管理客户端 相关命令:nmcli connection show        查看当前连接状态 nmcli connection reload      重启服务 nmcli connection sho…

    Linux干货 2016-09-07
  • centos7源码编译安装Apache2.4.25服务

    •一、源码包下载 •二、安装开发环境以及编译环境 •三、编译安装以及报错排查 •四、调试Apache服务 前言: 本文主要介绍了在Centos7环境中如何通过源码编译的方式安装Apache服务(也就是我们的httpd服务)由于本文整理时间有限,所以难免有些纰漏之处,欢迎大家在阅读后在评论区指出,本人看到会在第一时间修改文中错误的地方。 为什么要进行源码编译安…

    2017-04-22
  • Linux中分析文本工具

    一、收集文本统计数据wc wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据,且不改变原始数据。 例如; 可以对文件或STDIN中的数据运行 $wcstory.txt 39   237   1901 story.txt 行数 字数 …

    Linux干货 2016-08-08