位置变量;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

相关推荐

  • bash脚本编程之select语法详解

    shell编程之select select控制结构(在tcsh中不可用)基于Korn Shell中的控制结构 select语句首先显示一个菜单,然后根据用户的选择给变量赋予相应的值,最后执行一系列命令 其语法如下: select varname in list do commands done select 表达式是一种bash的扩展应用,动作包括: 自动用…

    Linux干货 2016-08-24
  • 马哥教育网络班21期+第二周课程练习

    Linux上的文件管理类命令都有哪些?其常用的方法及其相关示例。     cp:将源文件或者目录复制到目标文件或者目录中。     mv:将文件或目录重新命名,或者将源文件从源目录移到目标目录中。     rm:删除指定的一个文件或者多个文件或者目录。       &n…

    Linux干货 2016-07-16
  • linux 入门基础

    Linux概念部分: 1.CPU是Central Processing Unit的缩写,即中央处理器。由控制器和运算器组成,是计算机系统种最要组成部分。2.内存是介于CPU和外部存储之间,是CPU对外部存储中成粗与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它飞物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。3.内存是CPU能直接…

    Linux干货 2017-09-03
  • lamp架构实现论坛架构及压力测试

    练习:分别使用CentOS 7和CentOS 6实现以下任务 (1) 配置四个基于名称的虚拟主机;   (a) discuzX   (b) wordpress   (c) drupal   (d) phpMyAdmin,此虚拟主机仅支持https协议; (2) 对phpMyAdmin首页做压力测试   分别给…

    Linux干货 2016-10-17
  • 学习总结

    课上练习整理

    Linux干货 2017-11-19
  • 安装Redmine

    Redmine是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了,但想坚持一个自由和开放源码的解决…

    Linux干货 2016-12-01