码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Shell脚本-case in语句


    代码

    #!/bin/bash
    printf "Input integer number: "
    read num
    case $num in
        1)
            echo "Monday"
            ;;
        2)
            echo "Tuesday"
            ;;
        3)
            echo "Wednesday"
            ;;
        4)
            echo "Thursday"
            ;;
        5)
            echo "Friday"
            ;;
        6)
            echo "Saturday"
            ;;
        7)
            echo "Sunday"
            ;;
        *)
            echo "error"
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    输出:

    Input integer number:3↙
    Wednesday
    
    • 1
    • 2

    语法

    case expression in
        pattern1)
            statement1
            ;;
        pattern2)
            statement2
            ;;
        pattern3)
            statement3
            ;;
        ……
        *)
            statementn
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    case,in,esac是关键字,expression 表示表达式,pattern 表示匹配模式。

    case 会将 expression 的值与 pattern1、pattern2、pattern3 逐个进行匹配:
    • 如果 expression 和某个模式(比如 pattern2)匹配成功,就会执行这模式(比如 pattern2)后面对应的所有语句(该语句可以有一条,也可以有多条),直到遇见双分号;;才停止;然后整个 case 语句就执行完了,程序会跳出整个 case 语句,执行esac后面的其它语句。
    • 如果 expression 没有匹配到任何一个模式,那么就执行*)后面的语句(*表示其它所有值),直到遇见双分号;;或者esac才结束。*)相当于多个 if 分支语句中最后的 else 部分。
      这里的;;和*)就相当于其Java中的 break 和 default。
    对*)的几点说明:
    • Shell case in 语句中的*)用来“托底”,万一 expression 没有匹配到任何一个模式,*)部分可以做一些“善后”工作,或者给用户一些提示。
    • 可以没有*)部分。如果 expression 没有匹配到任何一个模式,那么就不执行任何操作。

    除最后一个分支外(这个分支可以是普通分支,也可以是*)分支),其它的每个分支都必须以;;结尾,;;代表一个分支的结束,不写的话会有语法错误。最后一个分支可以写;;,也可以不写,因为无论如何,执行到 esac 都会结束整个 case in 语句。

  • 相关阅读:
    机器人入门路线及参考资料(机器人操作方向)
    JUnit 面试题及答案整理,最新面试题
    UE4 通过按键升降电梯
    Mysql 如何模糊匹配后匹配优化
    LeetCode 每日一题 2023/10/16-2023/10/22
    LAMM: Label Alignment for Multi-Modal Prompt Learning
    网络编程概述、网络编程三要素、InetAddress类及端口和协议介绍
    程序员年薪50万有多难?背后真相曝光,溢价程度超乎你想象
    面试题:说一下Redis中有哪些阻塞点以及如何解决?
    Qt5开发从入门到精通——第七篇二节( 图形视图——QSlider类)
  • 原文地址:https://blog.csdn.net/qq_37279783/article/details/125534468
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号