美文网首页Shell
Shell Script(六):条件分支语句 2

Shell Script(六):条件分支语句 2

作者: 蓝天白云bubble | 来源:发表于2019-01-12 12:08 被阅读57次

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

       这篇文章讲述一下 case 条件分支语句。在多分支条件判定的场景中,可以使用 if 条件分支语句来编写脚本,但可能看上去不那么优雅,这时候可以考虑使用 case 条件分支语句。
       为方便讲述,先虚构这么一个场景:程序在和用户交互时,程序要根据用户的输入在终端进行相应的输出。
       当用户输入是 1 时,程序在终端输出 1 ;
       当用户输入是 2 时,程序在终端输出 2 ;
       当用户输入是 3 时,程序在终端输出 3 ;
       当用户的输入不是 1 不是 2 也不是 3 时,程序在终端输出 You did not enter a number between 1 and 3.
        如果使用 if 条件分支语句,脚本如下:

#!/bin/bash

echo -n "Enter a number between 1 and 3 inclusive > "
read character
if [ "$character" = "1" ]; then
    echo "You entered one."
elif [ "$character" = "2" ]; then
    echo "You entered two."
elif [ "$character" = "3" ]; then
    echo "You entered three."
else
    echo "You did not enter a number between 1 and 3."
fi

        上面的这种写法完全可以实现我们需要的功能,但看上去 if... elif... else... 的使用次数较多,代码显得臃肿,这时候如果我们选择使用 case 条件分支语句,脚本如下:

#!/bin/bash

echo -n "Enter a number between 1 and 3 inclusive > "
read character
case $character in
    1 ) echo "You entered one."
        ;;
    2 ) echo "You entered two."
        ;;
    3 ) echo "You entered three."
        ;;
    * ) echo "You did not enter a number between 1 and 3."
esac

        这段脚本实现了和第一个脚本同样的功能,但看上去清爽了很多。这就是 case 条件分支语句的作用。
        接下来简单介绍一下 case 条件分支语句的使用方法:

case word in
    pattern1 ) command1 ;;
    pattern2 ) command2 ;;
    ...
    patternn ) commandn ;;
esac

        脚本在执行时会将 word 的形式与下面第 1 个到第 n 个 pattern 的模式进行匹配,如果匹配成功则执行相应 pattern 后面的命令,并且不再尝试与后续的 pattern 进行模式匹配。比如 word 的模式与第 2 个 pattern 的模式相匹配,那么程序将执行第二个 pattern 后面的命令,这时即便 word 和第 2 个 pattern 后面的某个 pattern 相匹配,程序也不会做任何动作了。
        这里有两点需要注意:
       1、patterns 是 Shell 中的正则表达式,与 java 或 python 中的正则表达式是有区别的。要想知道更多关于 Shell 正则表达式的知识,可以自己搜索相关的教程;
       2、注意两个分号的使用,如果只用一个分号会报错。

       在知道了 case 条件分支语句的使用方法后,再来展示一个稍稍复杂点的例子:
       (1)当用户输入的是单个字母时,程序在终端输出 You typed the letter
       (2)当用户输入的是单个数字时,程序在终端输出 You typed the digit
       (3)当用户输入其他内容时,程序在终端输出 You did not type a letter or a digit
       实现该功能的脚本如下:

#!/bin/bash

echo -n "Type a digit or a letter > "
read character
case $character in
                                # Check for letters
    [[:lower:]] | [[:upper:]] ) echo "You typed the letter"
                                ;;

                                # Check for digits
    [0-9] )                     echo "You typed the digit"
                                ;;

                                # Check for anything else
    * )                         echo "You did not type a letter or a digit"
esac

       这段脚本也很简单,如果读者在看这段代码时感觉有困难,可能是看不太明白正则表达式部分。不过没有关系,因为你只需要知道这里是在讲述 case 条件分支语句的使用方法,只要知道了这些这里就达到了知识分享的目的。如果真的很想弄明白 Shell 中的正则表达式,还是那句话,可以自己搜索相关教程来学习。

相关文档

http://linuxcommand.org/lc3_wss0110.php

上一篇:Shell Script(五):交互和算数运算
下一篇:Shell Script(七):循环(for, while, until)

相关文章

  • Shell Script(六):条件分支语句 2

    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 这篇文章讲述一下 case 条件分支语...

  • 2018-12-21

    shell中if用法详解 if使用详解 格式 1.单分支语句结构 2.双分支语句结构 3.多分支语句结构 条件表达...

  • Shell Script(四):条件分支语句 1

    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 这篇文章中主要讲解三个命令:if、te...

  • shell 条件分支语句

    shell 条件分支语句 bash支持过程式的脚本编写。脚本的基本执行控制结构包括:(1) 按顺序执行(2) 选择...

  • Linux shell流程控制

    单分支的if语句 例子 1、使用单分支的if条件语句来判断/home/huanyu/shell/zz文件是否存在,...

  • Python循环

    分支 分支的基本语法 if 条件表达式: 语句1 语句2 语句3 ......

  • 流程控制

    1、条件语句 1.1 if条件语句 1.2 switch多分支语句 2、循环语句 2.1 while循环语句 2....

  • [Python]程序的分支结构

    单分支结构 if <条件>:<语句块> 二分支机构 if <条件>:<语句块1>else:<语句块2> 或:<...

  • 【现学现忘&Shell流程控制】— 44.if语句(4)

    3、多分支if条件语句 (1)多分支if条件语句格式: (2)练习 我们写一个例子,用if多分支条件语句来判断一下...

  • python学习笔记03-三大结构

    03 三大结构 - 顺序 - 分支 - 循环 分支语句 单路分支 if 条件表达式: 语句1 语句2 ...

网友评论

    本文标题:Shell Script(六):条件分支语句 2

    本文链接:https://www.haomeiwen.com/subject/yebqdqtx.html