shell脚本--判断

shell编程基础(shell脚本学习笔记)

判断


有了测试,就要有获得测试结果的机制,并根据测试结果运行不同的代码段,这样程序就可以从简单的命令罗列变得更“智能”一些,从而实现程序的流程控制。在Shell中,流程控制分为两大类,一类是“循环”,一类是“判断选择”。

1. if判断结构

if是最简单的判断语句,可以针对测试结果做相应处理:如果测试为真则运行相关代码,其语法结构如下:

if expression; then
        command
fi
if expression; then
         command1
         command2
         ...
fi

2. if/else判断结构

​ 上一小节中的if结构非常简单,它只会在if判断为真的情况下执行then后面的内容,所以该语句只能做 “单向选择” 。虽然可以通过顺序使用多条if语句,以满足多种条件的判断,但是看起来还是比较烦琐。而if/else语句则可以完成两个分支的选择:如果if后的判断成立,则执行then后面的内容;否则执行else后面的内容。其语法结构如下:

if expression; then
        command
else
        command
fi

3. if/elif/else判断结构

​ 不论是if结构的单向选择,还是if/else结构的双向选择,实际上都不能满足需要,现实中的判断往往有多种可能,在这种情况下可以通过if/else的语法嵌套完成多向选择。其结构如下所示:

if expression1; then
        command1
else
        if  expression2; then
                 command2
        else
                 command3
        fi
fi

使用这种嵌套的方式可以增加更多的选择分支,虽然从语法上来说毫无错误,但使用这种方式进入多层嵌套后,代码的可读性会变得越来越差。这时可以使用if/elif/else结构。其语法结构如下:

if expression1; then
         command1
elif expression2; then
         Command2
elif expression3; then
         Command3
...
fi

4. case判断结构

​ 和if/elif/else判断结构一样,case判断结构也可以用于多种可能情况下的分支选择。其语法结构如下:

case VAR in
var1) command1 ;;
var2) command2 ;;
var3) command3 ;;
...
*) command ;;
esac

其原理为从上到下依次比较VAR和var1、var2、var3的值是否相等,如果匹配相等则执行后面的命令语句,在无一匹配的情况下匹配最后的默认*,并执行后面的默认命令。要注意的是,case判断结构中的var1、var2、var3等这些值只能是常量或正则表达式。

下面的脚本可以用于检测用户的输入中是否含有大写字母、小写字母或者数字,这里case匹配的值是正则表达式。

[root@localhost ~]# cat detect_input.sh
#!/bin/bash
read-p "Give me a word: " input
echo-en "You gave me some "
case $input in
         *[[:lower:]]*) echo-en "Lowercase " ;;
         *[[:upper:]]*) echo-en "Uppercase " ;;
         *[[:digit:]]*) echo-en "Numerical " ;;
         *) echo "unknown input." ;;
esac

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhanjun.520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值