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 17:25
下一篇 2017-12-23 19:06

相关推荐

  • HA专题: corosync+pacemaker实现nginx高可用

    HA专题: corosync+pacemaker实现nginx高可用 前言 实验介绍 实验拓扑 实验环境 实验步骤 准备工作 安装HA集群组件 安装nginx和配置nfs 使用crmsh配置集群资源 测试 总结 前言 这几天都会学习高可用集群, 也会将其中的一些实验写出来分享给大家, 这个专题估计会写5篇左右, p.s: 写博客很累的 实验介绍 这次的实验比…

    Linux干货 2016-04-11
  • FHS文件系统介绍及各目录功能说明

    作者:M21-陆东贵 FHS文件系统介绍及各目录功能说明 FHS简介 Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾…

    Linux干货 2016-10-18
  • 一些不起眼但非常有用的 Vim 命令

    原文出处: xmodulo   译文出处:linux.cn – wangjiezhe   如果我的关于这个话题的最新帖子没有提醒到你的话,那我明确地说,我是一个 Vim 的粉丝。所以在你们中的某些人向我扔石头之前,我先向你们展示一系列“鲜为人知的 Vim 命令”。我的意思是,一些你可能以…

    Linux干货 2015-03-09
  • IO重定向和管理及管道

    IO重定向   通常对程序来讲,输入输出数据可以是键盘、鼠标、显示器等;IO重定向就是将原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器输出而是希望输入到某以文件中的可以通过Linux重定向进行这项工作。  IO重定向和FD(File Descriptor)有关。      标准输入(std…

    Linux干货 2016-08-05
  • 软链接和硬链接详解

    软连接和硬链接图解 硬链接 符号链接 软链接和硬链接详解 软链接和硬链接详解 Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接,另一种是符号链接(又称软链接)。 UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系…

    Linux干货 2016-09-06
  • 马哥教育第20期一班第一周作业

    一、利用echo将下图弄成闪烁;字体自带颜色且有下滑线? [root@centos7 ~]# echo -e "\033[31m\033[4m\033[5m\0052\0052\0052\0052\0052\0052\0052\n \0052\0052\0052\0052\0052\n &…

    Linux干货 2016-07-29