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

相关推荐

  • iptables

    练习:基于状态放行telnet, ftp, ssh, http, samba, icmp等服务 (1) 对本机的ping请求每分钟不得超出20个 (2) 每客户端对本机的ssh的并发连接数不得超过3个 (3) 本机的telnet服务仅允许工作时间内访问 [root@node1 ~]# vim iptables.sh iptabl…

    Linux干货 2016-10-22
  • Linux基础知识及常用命令

    pwd:printing working directory -显示当前工作目录            [root@edu tmp]# pwd          &nbs…

    Linux干货 2016-09-15
  • 软件包管理

    软件包的分类,主要有以下两大类    源码包    二进制包(rpm包,系统默认包) rpm包由Redhat公司提出,被众多linux发行版所采用。 优点:建立统一的数据库文件,详细记录软件包的安装、卸载等变化信息,能够自动的分析软件包依赖关系。 查询已安装的rpm软件信息: 格式:     rpm…

    Linux干货 2016-08-25
  • Linux程序包管理(一)RPM使用

    Linux程序包管理 在早期我们使用源代码的方式安装软件时,都需要先把源程序代码编译成可执行的二进制应用程序,然后进行安装。意味着每次安装软件都需要经过 预处理 –> 编译 –> 汇编–> 链接, 这个复杂的过程。为简化安装步骤,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提…

    Linux干货 2016-06-01
  • Linux目录配置及文件名种类与扩展名

    Linux目录配置及文件名种类与扩展名 一、FHS目录配置标准 在FHS标准诞生之前,由于有很多公司为Linux开发产品,而又各自有各自的存放路径,所以导致管理困难,因此诞生了FHS标准。 FHS 依据文件系统使用的频繁与否与是否允许用户随意更改,将目录定义成四种交互作用的形态。如下图 可分享的:可以分享给其他系统挂载使用。 不可分享:自…

    Linux干货 2016-08-02