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

相关推荐

  • 常用文本处理工具及grep和正则表达式

    一、文件查看命令 (1)普通查看工具:cat,tac,rev  1、cat命令常用选项    -n:显示行号    -E:显示行结束符$    -A:显示所有控制符  2、tac:从最后一行开始倒序显示  3、rev:将每一行的内容反转显示   (2)分页查看…

    Linux干货 2016-08-11
  • bash脚本编程实例

    bash脚本编程实例 1.写一个脚本 接受一个以上文件路径作为参数 显示每个文件拥有的行数 总结说明本次共为几个文件统计了其行数 #!/bin/bash # read -p “please input some paths:” paths if [ -z $paths ];then echo “There are not any paths inputtin…

    Linux干货 2017-08-14
  • 20161014作业

    2016/10/14作业: ##操作类: 1. 设置自己的终端提示符,要求字符终端登录时: a> 需要带颜色 b> 需要显示当前执行到了第几条命令 c> 显示当前登录终端,主机名和当前时间 2、使用shutdown命令于5分钟后重启自己的PC机 3. 学习man,学会使用a> ls递归列出/usr目录下所有文件, b> 列出目录…

    Linux干货 2016-10-20
  • ansible实战示例

    要求:     使用ansible部署以下任务:     (1) 在VS部署主/备模型的keepalived + nginx的负载均衡;     (2) 在RS主机上部署httpd + php + php-mysql;     (3) 在第五台主机上部署mariadb-serve…

    Linux干货 2016-11-11
  • tcp通讯的服务器和客户端解析

    服务器端编程步骤, 1.创建Socket对象,下文中的socket都表示一个socket对象 2.绑定IP地址和端口,服务器的IP和端口 3.开始监听,将在指定的端口上监听,listen() 如果对方申请连接这个IP和端口,将被听到,这个过程 4.获取用于传输数据的Socket对象 socket.accept() ->(socket object,ad…

    Linux干货 2018-01-01
  • 网络相关命令

    网络相关命令 常用命令 ifcfg家族:   ifconfig:配置IP,NETMASK   route :路由   netstat : 状态及统计数据查看 iproute2家族     ip  系列 &nbs…

    Linux干货 2016-09-07