位置变量;if;for循环

向脚本传递参数就是用位置参数变量实现

传递给命令的参数称为位置参数  ls  /etc/var

Myscript.sh  argu1 argu2 ….${10}  ${11}…

  引用方式 :$1就是引用整个脚本位置参数的第一个,第一个会自动保存在$1

             $2就是引用整个脚本位置参数的第二个,第二个会自动保存在$2

         ….

blob.pngblob.png


轮替;

Shft [n]:一次轮替n个参数

blob.png

blob.png


上面例子的引申

blob.png

blob.png


练习

写一个脚本,通过命令传递两个文本文件路径给脚本,计算其空白行数之和

blob.png
blob.png


特殊变量:

  $0  :所执行的脚本文件路径本身

blob.pngblob.png

$#  :看传了多少个参数

blob.pngblob.png

$*   :所有参数,ni  wo  ta

$@  :所有参数,ni wo ta

 

练习,通过命令传递两个文本文件路径给脚本,计算

其空白行数之和,如果给的路径小于两个,提示:至少得输入两个路径,并且退出

blob.pngblob.png


过程式编程语言的代码执行顺序:

  顺序执行:逐条执行,一个挨一个

  选择执行:每一种编程语言都会用到

      代码有一个分支:条件满足时,才会执行

      代码有两个或以上的分支:只会执行其中一个满足条件的分支

  循环执行

     代码片段(循环体)要执行01或多个来回

 

选择执行:

1)&& , ||

 (2) if语句:可嵌套

 (3)case语句:简化多分枝的if语句

      ·单分支的if语句

           if  测试条件;  then (如果测试条件为真,那么就怎么怎么)(此时测试条件后面要加”;“或者不加“;”就把后面的then单独换行写

               If-true代码分支

           fi 结束

 

 

      ·双分支的if语句

           if  测试条件;  then

               If-true条件为真时执行的分支,分支里可以有n个语句

           else

               If-false条件为假时的分支

          · fi 结束

 

     ·多分枝的if语句(测试条件不光有真假,还有如果如果如果否则)

           if  测试条件1;  then

             条件1为真分支,代码执行

           elif 测试条件2then

 

              条件2为真分支

           elif 测试条件3then

              条件3为真分支

           …

           elif 测试条件nthen

              条件n为真分支

           else

              所有条件均不满足时的分支

           fi

        

          注意:即便多个条件可能同时都能满足,分支只会执行其中一个,哪个首先测试为真就执行哪个。如果第一个为真就执行第一个,后面的不考虑,如果所有都不为真,就执行else

          注意:if语句可嵌套

 

 

练习: 单分支

通过参数传递一个用户名给脚本,此用户不存在时则添加之

blob.pngblob.png


练习:如果用户不给参数,提示:要输入信息,并给2的返回值

blob.png

blob.png


练习:双分支

  如果用户存在,提示:用户已经存在,否则添加

blob.png
blob.png



练习:多分枝

脚本参数传递一个文件路径给脚本,判断此文件的类型

blob.png

blob.png

练习:多分枝

1,脚本参数传递一个文件路径给脚本,此参数为用户名

   根据其ID号来判断用户类型

   0:管理员

   1-499:系统用户

   500+:登录用户

blob.pngblob.png

blob.pngblob.png

2,写一个脚本

 (1)列出如下菜单给用户

   disk)show disks info

   Mem)show memory info

   Cpu )show cpu info

  *)quit

 (2)提示用户给出自己的选择,而后显示对应其选择的相应系统信息

blob.png

练习:1,通过命令行给定两个数字,输出其中较大的数值

blob.png

blob.png

循环执行:将一段代码重复执行0次,1次或多次

   两个关键要点

        1,进入条件:什么时候执行,要不要执行,条件满足时,才进入循环

        2,退出条件:每一个循环都应该有退出条件,以有机会退出循环

  

Bash脚本的三种循环方式

   1for    2while    3until23几乎没什么区别,除了进入和退出的条件是相反的)

 

   For循环的两种格式

     1,遍历列表

     2,控制变量

 

   遍历列表:

      for VARAIBLE in LIST;do

          循环体

      Done

 

进入条件:只要列表有可用元素,即可进入循环

退出条件:列表中的元素遍历完成

 

LIST的生成方式

  1,直接给出

  2,整数列表

      (a{start..end} 自动展开

       (b) seq [start [step]] end

          seq 10就是1-10     

          seq 5  10就是5-10  

          seq 1 2 10就是奇数列表  1 3 5 7 9

          seq 2 2 10就是偶数列表  2 4 6 8 10

  3,返回列表的命令,例如ls  cat

  4,glob(通配)

  5,变量引用

     $@  $*

  …

 

blob.png

blob.png

/tmp下创建10个临时文件,叫f1f10

blob.png

blob.png

100以内所有正整数之和

blob.png

blob.png

blob.png

blob.png

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

(0)
wutianyouwutianyou
上一篇 2016-08-15 09:25
下一篇 2016-08-15 09:25

相关推荐

  • VIM入门及进阶

    什么是VIM?     VIM类似于Vi编辑器, 它是一个功能强大、可高度定制的文本编辑器, 是一个纯粹的自由软件。注意:vi和vim不完全相同 为什么要使用VIM?     相信大多数人接触Linux时使用的第一个文本编辑器都不是VIM,很多人看到VIM复杂的命令操作就望而祛步…

    系统运维 2016-03-04
  • 马哥教育网络21期+第八周练习博客

    马哥教育网络21期+第八周练习博客 # 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:工作于ISO模型的物理层,防止由于距离远,信号衰减; 网桥:用来连接不同网段,隔离冲突域; 二层交换机:二层交换机一般做为了三层交换机以下,利用设备mac地址进行通信,可以划分vlan,隔离广播域; 三层交换机:用于核心数据转发,不…

    Linux干货 2016-09-05
  • 8月9日sed命令

    sed命令及vim基础使用命令 处理文本的工具sed stream editor,行编辑器    sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有…

    Linux干货 2016-08-11
  • 优云Automation:实现IT服务弹性伸缩的利器

    随着互联网业务快速持续增长,IT资源使用量按需变化成为常态,这就要求信息部门能快速响应资源使用的变化要求,对运维提出不小挑战。比如电商、在线教育等企业经常推出一些秒杀、抢红包活动,在特定时间段对资源的利用处于高峰期,之后基本处于空闲。 几年前,我们从申请采购到应用部署上线都只能人工操作,需要提前几个月开始规划。如今通过云平台能很好实现资源按需动态管理,运维人…

    系统运维 2017-03-15
  • 第三章 Linux文件系统初步

    用户界面:      可分为两种GUI和CLI         GUI(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。 GNOME(英语发音:/ɡˈnoʊm/或英语发音:/…

    Linux干货 2016-06-03