Shell脚本编程 流程控制—选择

流程控制可根据不同的情况做不同的处理,而且可重复执行指定的程序区域,在shell bash中流程控制可分为两大类:

"选择"和"循环"

1.选择:if、case、select

2.循环:for、while、until、select

命令结束状态返回值:

在shell中命令执行状态返回值分两种,成功和失败,0表示成功,非0表示失败

条件测试就是根据指定命令的状态返回值来选择执行相应命令

一、if条件判断:

    分三种:

    单分支if

    双分支if

    多分支if

    单分支if:

        if 条件判断; then

            命令区域

        fi

    如果测试条件为真,则执行命令区中中所定义的代码

[root@CentOS6 ~]# cat if.sh 
#!/bin/bash
#
if id root &> /dev/null; then
echo "root user exists."
fi
[root@CentOS6 ~]# bash if.sh 
root user exists.
[root@CentOS6 ~]#

    

    双分支if:

        if 条件判断 ;then

            命令区域1

        else

            命令区域2

        fi

    如果条件判断为真,则执行命令区域1中的代码,否则执行命令区域2的代码

[root@CentOS6 ~]# cat if.sh 
#!/bin/bash
#
if id rootsdf &> /dev/null; then
echo "root user exists."
else
echo "rootsdf user not exists."
fi
[root@CentOS6 ~]# bash if.sh 
rootsdf user not exists.
[root@CentOS6 ~]#

    多分支if:

        if 条件判断1 ;then

            命令1

        elif 条件判断2 ;then

            命令2

        …

        else    

            命令3

        fi

    如果条件判断1为真,则执行命令1,如果为假,判断条件2是否为真,如果为真,则执行命令2,否则执行命令3,elif条件可以有多个

if [ $1 -gt $2 ];then
echo "$1"
elif [ $1 -lt $2 ];then
echo "$2"
else
echo "相等"
fi
[root@CentOS6 ~]# bash if.sh 5 3
5
[root@CentOS6 ~]# bash if.sh 6 3
6
[root@CentOS6 ~]# bash if.sh 3 3
相等
[root@CentOS6 ~]#

    

二、条件判断:case语句

如果我们进行的条件测试多了起来,使用if和elif语法会显得很啰嗦,这时我们来使用case就比较简单了

case语法结构:

    case $VAR in

    PAT1)

        命令1

        ;;

    PAT2)

        命令2

        ;;    

    PAT3)

        命令3

    …

    *)

        命令

    esac

    注意:case支持glob通配符:

        *:匹配任意长度任意字符

        ?:匹配任意单个字符

        []:范围内任意单个字符

        a|b:a或b

[root@CentOS6 ~]# cat if.sh 
#!/bin/bash
#
case $1 in
start)
echo "start"
;;
stop)
echo "stop"
;;
restart)
echo "restart"
;;
*)
echo "error"
;;
esac
[root@CentOS6 ~]# bash if.sh start
start
[root@CentOS6 ~]# bash if.sh stop
stop
[root@CentOS6 ~]# bash if.sh restart
restart
[root@CentOS6 ~]# bash if.sh ressdfsdf
error
[root@CentOS6 ~]#

三、select语句:主要用于创建菜单供用户选择

语法格式:

    select 变量名 in 列表

    do    

        循环体

    done

按数字排列的菜单项显示在标准错误上,并显示PS3提示符,来提示用户输入内容

用户输入菜单列表中的某个数字,执行相应的命令,用户输入的内容江北保存在变量REPLY当中

select是个死循环,因此需要使用流程控制语句来控制循环体,例如:break 退出循环

select一般结合case语句使用

[root@CentOS6 ~]# cat select.sh 
#!/bin/bash
#
PS3="Your choice: "
select i in one two
do
case $i in
one)
echo "$i"
echo "您输入的是$REPLY"
;;
two)
echo "$i"
echo "您输入的是$REPLY"
;;
*)
echo "Error"
break
;;
esac
done
[root@CentOS6 ~]# bash select.sh 
1) one
2) two
Your choice: 1
one
您输入的是1
Your choice: 2
two
您输入的是2
Your choice: 3
Error
[root@CentOS6 ~]#

菜单列表省略,此时使用位置参数当做列表

read命令:把用户输入的内容保存在一个或多个变量中

    -p:指定提示符

    -t #:指定超时时间

[root@CentOS6 ~]# read -p "Please enter a string: " STRING
Please enter a string: zhairuixiang
[root@CentOS6 ~]# echo $STRING
zhairuixiang
[root@CentOS6 ~]#

原创文章,作者:zhai796898,如若转载,请注明出处:http://www.178linux.com/39455

(0)
zhai796898zhai796898
上一篇 2016-08-24
下一篇 2016-08-24

相关推荐

  • 使用httpd反向代理模块实现tomcat负载均衡集群(下)

    上一篇讲解了http使用mod_http和mod_ajp代理模块实现tomcat负载均衡,下面我们来讲解使用http的mod_jk实现taomcat的负载均衡集群: 注意:http的mod_jk是第三方扩展模块,在新http版本中以不支持,在httpd 1.3和2.0效果较好 6、使用mod_jk实现tomcat负载均衡集群 6.1安装mod_jk [roo…

    Linux干货 2015-07-21
  • M22 Centos6上编译安装httpd2.4并实现HTTPS浏览

    随着网络技术的发展,人们对信息安全越来越重视,传统的http浏览互联网的方式由于未经加密,其安全性广为人们诟病,https协议作为加密的互联网解决方案解决了这一问题。下面我就简要说明下如何实现通过https发布web页面的。   实验目的: 模拟Centos6上安装httpd2.4,并实现https加密访问主页 实验器材: Centos6.8虚拟机…

    Linux干货 2017-04-20
  • N25第三周视频博客 find命令详解

    视频作业:find命令详解 大纲:         1、什么是find 2、find能实现什么功能 3、为什么要使用find 4、如何使用find 5、find各参数详解   1、什么是find      find是linux 命令,它将档案系统内符合 expression(表达…

    Linux干货 2016-12-15
  • N22-第二周作业

    Linux上的文件管理类命令有哪些,其常用使用方法及其相关示例演示。 文件管理类命令有:cp,mv,rm cp:复制文件或者目录   单源复制:cp [OPTION]… [-T] SOURCE DEST        多源复制:cp [OPTION]… SOURCE… DI…

    Linux干货 2016-09-19
  • 网络基础命令与配置文件地址

    centos6查看网卡dmesg | grep -i ethethtool -i eth0卸载网卡驱动modprobe -r e1000rmmod e1000装载网卡驱动modprobe e1000网络配置,静态指定system-config-network-tui 字符界面式网络配置ip addr add IP地址 via 网关IP地址动态分配在/etc/…

    2017-09-09
  • 用户管理生产环境实践案例

    关于用户管理的命令回顾:visudo 用户管理生产环境实践案例 1. 关于用户管理命令的回顾 2. 正文 关于用户管理的命令回顾: <1> useradd命令 <2> 其他命令 (1)信息收集 (2)模拟用户测试 <1> 问题现状 <2> 需求分析 <3> 实现方针 <4>. 实施过程 …

    Linux干货 2016-10-18