shell脚本编程进阶

一些常用的编程语句,

过程式编程语言通常分为三种执行方式,分别是

顺序执行

选择执行

循环执行

一、选择执行语句

1)if语句

选择执行:if语句可以是单分支选择,也可以双分支分支选择,还可以多分支选择。而且if语句可嵌套,

单分支

if 判断条件;then

   条件为真的分支

fi

根据判断条件选择是否执行下面的分支,如果符合条件,则执行;若不符合,则跳过。

双分支

if 判断条件;then

条件为真的分支1

else

条件为假的分支2

fi

根据判断条件选择是否执行下面的分支,如果符合条件,则执行分支1;若不符合,则执行分支2。

多分支

if 判断条件1;then

条件为真的分支

elif 判断条件2;then

条件为真的分支

elif 判断条件3;then

条件为真的分支

else

以上条件均不符合的分支

fi

根据判断条件进行判断,当判断条件为真时,执行当前环境下的分支;若判断条件都不符合,则执行最后一个分支

if语句作为选择执行语句经常用于条件判断的情况,可根据不同的条件设计多个分支进行判断。

例题; 编写脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息 。

根据if语句编写了如下脚本

if1

这是一个双分支的if判断语句,利用”id $name”的执行结果来进行判断,如果$?等于0,则说明该用户已创立,执行”echo”命令;若$?不等于0,则说明该用户未创立,则执行”useradd”命令。

执行该脚本,首先输入已存在的用户”zhao”,然后输入为创建的用户”yjj”,显示两种不同的结果。if2

2)case语句

case语句用于多分支的情况,根据变量匹配对应的分支来执行。

case语句格式

case 变量引用 in

par1)

执行分支1

    ;;

pat2)

执行分支2

    ;;

……

*)

执行分支

   ;;

seac

case语句支持通配符写法。

例题: 编写脚本/root/bin/yesorno.sh,提示用户输入yesno,并不区分大小写

case11

case语句支持通配符写法,对变量”ans”进行匹配,当”ans”匹配到无论大写还是小写的”yes””no”都会显示对应的分支,当匹配不到时,就会执行最后的默认分支。

case2

case3

二、循环执行语句

循环执行即将某段代码执行多次,有的语句循环次数已知,即可指定循环多少次;还有循环次数未知的语句,根据进入循环和退出循环的条件来开始或退出循环。

1)for语句

基本格式

for  变量名 in 列表;do 

    循环体

done

通过列表给变量赋值,执行一次循环,当列表内数值用完,结束循环。

列表可通过以下方式生成

1)直接给出

在”in”后直接列出要循环的数值

2)数列

通过{start..end}表示一个集合作为列表

3)用命令生成列表

例如”ls ~root/”命令可显示root家录下文件名。

4)通配符生成列表

例如”*.sh”可显示”sh”后缀文件作为循环列表

5)还可使用变量作为列表

例题: 编写脚本,提示输入正整数n的值,计算1+2+…+n的总和

for1

用”seq”列出1到n的值,循环相加从1加到n,最后输出结果

for2

2)white语句

3)until语句

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90489

(2)
yoyiccccyoyicccc
上一篇 2017-12-23
下一篇 2017-12-23

相关推荐

  • 一个简单小例子来说一下Rescue营救模式

    昨天不小心将/lib64下的一个动态库文件libc.so.6(很多命令都依赖的)给移动到了/root下,然后除了一些内部命令可用外,其余命令都不能用了,然后就想着看看重启可不可以修复,结果重启后就再也开不了机了,心想着这可咋整,要不用最快的方式进行快照恢复吧,结果老师就说了,不能使用快照,让我们使用Rescue营救模式进行恢复,然后在恢复的过程中就发现一个问…

    Linux干货 2017-08-21
  • 磁盘管理(二)Raid与LVM逻辑卷

    概述:本章主要讲解raid和逻辑卷 什么是RAID RAID:Redundant Arrays of Inexpensive(Independent) Disks 1988年由加利福尼亚大学伯克利分校( University ofCalifornia-Berkeley) “ A Case for RedundantArrays of Inexpensive …

    Linux干货 2016-09-05
  • bash shell 循环语句的使用

    条件选择if语句       if语句是选择执行的,条件满足则执行,不满足则退出,if语句也可嵌套,就是if语句里面也可以在进行if语句 单分支 if 判断条件;then statement1 fi   双分支 if 判断条件;then 条件为真得分支 else 条件为假的分支 fi   …

    Linux干货 2016-08-18
  • bash脚本编程

    bash脚本编程之用户交互:     脚本参数     用户交互:通过键盘输入数据     read [option]…[name]…     -p: "PROMPT"      -t: TIMEOUT &…

    Linux干货 2017-01-01
  • Java中的CopyOnWrite容器

    Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和…

    Linux干货 2016-08-15
  • netfilter/iptables 基础入门

    netfilter/iptables 基础入门 Firewall防火墙的实现方式 什么是netfilter?        Netfilter是由Linux内核提供的框架,允许以定制处理程序的形式实现各种与网络相关的操作。Netfilter为包过滤,网络地址转换和端口转换提供各种功能和操作,它们提供了通过网络…

    2017-06-13