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

相关推荐

  • 排错

    把/etc/inittab  模式改为6模式 怎么修复 1 先把 vim /etc/inittab 打开 2 把/etc/inittab 模式改为6 3 reboot 4 在倒计时完之前按任意键 5按A进入 6 在quiet  命令后面写入 3  模式 重启 7把 vim /etc/inittab 打开 8 把/etc…

    Linux干货 2017-05-15
  • 第五周

    显示/boot/grub/grub.conf中以至少一个空白字符开头的行 egrep "^[[:space:]]+" /boot/grub/grub.conf 显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行 egrep "^#[[:…

    Linux干货 2016-09-19
  • 逻辑卷管理

    逻辑卷管理 一 创建逻辑卷 1 准备分区或硬盘 这里使用/dev/sdb、/dev/sdc两块硬盘和/dev/sda9、/dev/sda10两个分区,大小都为1G,磁盘有限,我也不想这么抠的。 添加分区/dev/sda9、 /dev/sda10 [root@centos7 ~]# fdisk /dev/sda Welcome to fdisk (u…

    Linux干货 2017-05-02
  • 重定向和管道

    1.Linux给程序提供三种I/O设备 标准输入-0    默认接受来自键盘的输入 标准输出-1    默认输出到终端窗口 标准错误-2    默认输出到终端窗口 在dev下有个fd设备,打开的文件都有一个fd:file dexcriptor 文件描述符 I/O重定向:…

    2017-07-20
  • N25-第4周作业(用户权限,grep用法)

    复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有访问权限.      [root@bogon ~]# chmod -R o=—,g=— /home/tuser1/ [root@bogon ~]# chmod -R o=,g= /home/tuser1/ 编辑/etc/…

    Linux干货 2016-12-26
  • 计算机运维基础知识 Linux版

    计算机系统由硬件系统和软件系统组成 第一代计算机   电子管时代 第二代计算机   晶体管时代 第三代计算机   集成电路时代 第四代计算机   大规模集成电路时代 1964年,世界第一代计算机ENICA。用来计算弹道轨迹。 冯诺依曼  计算机之父 运算器,控制器,存储器,输入设备,输出设备。 巨型计算机,大…

    Linux干货 2016-08-04