位置变量;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
下一篇 2016-08-15

相关推荐

  • 文件查询、yum安装等零散知识点总结

    归纳重要知识点:文件查询、Linux配置文件、文件的压缩与归档、yum安装包文件   这篇博客介绍以前遗落的重要知识点进行归纳总结,分为四大块:文件查询命令、全局与个人配置文件、文件的压缩与归档、yum命令安装程序包的相关条件与操作。下面结合个人理解与学习内容一一进行总结。     一.文件查询命令locate与find &nb…

    Linux干货 2016-08-26
  • 磁盘管理

    CHS cylinder-head-sector cylinder柱面=track*head=512*63*256=8M  磁盘分区 为什么是分区? • 优化I/O 性能 • 实现磁盘空间配额限制 • 提高修复速度 • 隔离系统和程序 • 安装多个OS • 采用不同文件系统   MBR:使用32位表示扇区数量,按每扇区512字节计算,每个…

    Linux干货 2016-08-29
  • shell脚本练习题

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信 息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小,硬盘大小。 #!/bin/bash ##编写脚本/root/bin/systeminfo.sh,显示当前主机系统信 息,包括主机名,IPv4地址,操作系统版本,内>核版本, C…

    Linux干货 2016-08-24
  • 基于NFS实现WordPress

    实验内容: (1)主机IP nfs server IP :192.168.29.120 nfs server IP: 192.168.29.110 (2)要求 nfs server共享/data/web/ 、/data/mysql 两个目录 nfs client挂载nfs server共享的/data/web/的文件系统至/var/www/html;部署wo…

    2017-06-13
  • 硬链接和软链接的区别

                        硬链接和软链接的区别     硬链接: 1.创建命令:ln或link 2.同一文…

    Linux干货 2016-12-05
  • 马哥教育网络班21期+第六周课程练习

    1、描述计算机的组成及其功能 答: (1)计算机组成: 输入(键盘)、输出(显示器),存储器(硬盘),运算器,控制器(CPU) (2)实现功能:    1)文件系统    2)内存管理    3)网络功能    4)进程管理    5)驱动程序 2、按系列罗列…

    Linux干货 2016-08-15