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

相关推荐

  • 何为正则表达式?

    何为正则表达式?   UNIX/Linux上有许多文本处理工具,其中最主要最重要要属grep、sed、和awk三种了,被称为文本处理三剑客。但是要完全认识他们的各种功能,则必须现在正则表达式及其元字符的使用上打好基础。 什么是正则表达式呢?正则表达式(regular expression,RE)是一种字符模式,用于在查找过程中匹配指定的字符。正则表…

    Linux干货 2016-08-16
  • inode、软硬链接区分、ln命令

    inode、软硬链接区分、ln命令 一、inode inode记录的是文件的属性及文件实际放在那块数据块中的。inode包含以下数据: 1. 该文件的可被访问的权限(read/write/excute) 2. 该文件的属主、属组(owner、group) 3. 该文件的大小 4. 该文件创建或者状态改变的时间(Ctim…

    Linux干货 2016-08-02
  • linux下解压命令大全

    .tar  解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 和 .t…

    Linux干货 2017-07-11
  • 用户权限及正则表达式

    ln –s软连接原文件可以写绝对路径或相对于软连接文件的相对路径 ln 硬链接的原文件可以写绝对路径,相对于硬链接文件的相对路径或相对于当前路径的路径(因为硬链接主要是看节点号) etc/passwd格式: username:x:uid:gid:home:shell etc/shadow格式 username:password:password age:mi…

    Linux干货 2016-08-08
  • iptables简单概念..

    iptables: 包过滤型的防火墙 Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;    主机防火墙     网络防火墙   &…

    Linux干货 2017-06-19
  • CentOS7系统用户空间管理进程systemd详解

    概述:     系统启动过程中,当内核启动完成,后加载根文件系统,后就绪的一些用户空间的服务的管理工作,就交由init进行启动和管理,在CentOS6之前的init的管理方式都类似,相关的内容我们在之前的文章中也做出过介绍。在CentOS7上,init变成了systemd,其管理方式也发生了重大的变化,本章就跟大家欧一…

    Linux干货 2016-09-21