SHELL中case的使用

快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,博主会及时修改)

shell中的case语句

在shell脚本中,case语句用于匹配一个变量的值。它类似于if语句,但是更适合于多个条件的匹配。case语句使用语法结构如下:

case variable in
value1)# execute commands;;
value2)# execute commands;;
value3)# execute commands;;
*)# default case (if no value matches);;
esac
  • case关键字开头,后跟要匹配的变量名。
  • in关键字之后是要匹配的值列表,这些值用圆括号包围,每个值末尾都要加上双引号。
  • 每个值后面都跟着一对圆括号,其中包含要执行的命令列表。
  • 每个命令列表都要用两个分号分隔。
  • 最后一个分号表示一个空命令,表示这个case语句的结束。
  • 如果没有任何值匹配,最后的“ *”表示默认情况。

下面是一个使用case语句的案例:

#!/bin/bash
echo "请输入一个数字:"
read num
case $num in 1)echo "你输入的是1";;2|3|4)echo "你输入的是2、3或4";;[5-9])echo "你输入的是5至9之间的数字";;*)echo "你输入的不是数字";;
esac

在这个脚本中,我们要求用户输入一个数字,根据不同的数字做出不同的响应。例如,如果用户输入的是1,就输出“你输入的是1”;如果用户输入的是2、3或4,就输出“你输入的是2、3或4”;如果用户输入的是5至9之间的数字,就输出“你输入的是5至9之间的数字”;如果用户输入的不是数字,就输出“你输入的不是数字”。

注意,在模式2中,我们使用了|分隔符,表示可以匹配多个模式;在模式3中,我们使用了[],表示匹配一个范围内的字符。
下面是一个例子,使用case语句匹配一个变量的值:

#!/bin/bash# Get user input
echo "Enter a number from 1 to 3:"
read num# Match the number
case $num in1)echo "You entered 1.";;2)echo "You entered 2.";;3)echo "You entered 3.";;*)echo "Invalid number.";;
esac

在上面的例子中,用户输入一个数字,然后case语句根据数字匹配并执行相应的命令。如果用户输入的数字不在1-3之间,则执行默认命令。

另一个例子是根据文件扩展名进行操作:

#!/bin/bash# Get file extension
read -p "Enter file name: " file# Match the file extension
case $file in*.txt)echo "File is a text file.";;*.pdf)echo "File is a PDF file.";;*.jpg|*.jpeg|*.png)echo "File is an image file.";;*)echo "File type is not supported."
esac

在这个例子中,读取文件名并使用case语句判断文件类型。如果文件扩展名是.txt,则执行相应的命令,如果是.pdf,则执行另一个命令,以此类推。注意最后一个分支匹配多个扩展名,用“ |”分隔。如果文件扩展名不在列表中,则执行默认命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/145771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】OpenCV—Image Pyramid(8)

文章目录 1 图像金字塔2 拉普拉斯金字塔 1 图像金字塔 高斯金字塔 在 OpenCV 中使用函数 cv2.pyrDown(),实现图像高斯金字塔操作中的向下采样,使用函数 cv2.pyrUp() 实现图像金字塔操作中的向上采样 import cv2img cv2.imread(C://Users/Administrat…

Mysql中的进阶增删查改操作(二)

联合查询和合并查询 一.联合查询1.内连接2.外链接2.1左外连接2.2右外连接 3.自连接4.子查询5.合并查询 一.联合查询 步骤 1.进行笛卡尔积 2.列出连接条件 3.根据需求再列出其他条件 4.针对列进行精简(可以使用聚合函数) 我们先搭建一个多表查询的框架 这样一个多表查询就搭建出…

基于JAVA SpringBoot和HTML美食网站博客程序设计

摘要 美食网站是一个提供各种美食信息和食谱的网站,旨在帮助用户发现、学习和分享美食。旨在探讨美食网站在现代社会中的重要性和影响。随着互联网的普及,越来越多的人开始使用美食网站来获取各种美食信息和食谱。这些网站不仅提供了方便快捷的搜索功能&…

MySQL8.0学习笔记

1. CMD命令 1.1 数据库启动与停止 (1) 启动数据库:net start mysql80 (2) 停止数据库:net stop mysql80 1.2 数据库连接与退出 (1) 连接数据库:mysql [-hlocalhost -P3306] -uroot -p[123456] // 本地数据库可省略-h -P (2) 退出数据库…

在市场发展中寻变革,马上消费金融树行业发展“风向标”

11月11日,2023金融街论坛年会第三届全球金融科技大会“金融科技创新与合规安全”平行论坛在北京召开。会上,马上消费金融副总经理孙磊就数据对金融的赋能作用、数据安全治理等方面展开了深度讨论。 公开信息显示,马上消费金融是一家经中国银保…

CodeWhisperer--手把手教你使用一个十分强大的工具

Amazon CodeWhisperer 是一款能够帮助我们智能生成代码的工具。经过数十亿行代码的训练,可以根据提示和现有代码实时生成从片段到完整功能的代码建议。类似 Cursor 和 Github Copilot 编码工具。目前,CodeWhisperer 兼容 Python、Java 和 JavaScript&…

Vue 路由props 多路由参数时使用

传统路由参数获取 this.$route.query.id this.$route.query.a this.$route.query.b this.$route.query.c this.$route.query.d this.$route.query.e ......如果参数很多,特别麻烦 第一种接收parpas参数 使用props http.www.csdn.net/123/321 {name: user,path: /us…

mysql数据模型

创建数据库 命令 create database hellox : ( hellox名字) sql语句 创建 数据库 命令 create database hell; 也是创建但是有数据库不创建 命令 create database if not exists hell ; 切换数据库 命令 use hello&…

MacBook 常用快捷键使用

MacBook 常用快捷键使用 官方使用地址: https://support.apple.com/zh-cn/HT201236 commandn 新建 如果QQ要开多个,可以打开QQ后按commandn 又打开一个了 终端 commandn重新打开一个,commandt在当前终端在打个一个选项卡commandw 关闭最前面的窗口…

2023解析企业数据中台:突破数据孤岛,实现数据化管理升级-亿发

当前,各大企业纷纷将业务中台、数据中台、安全中台等纳入建设计划,其中,数据中台被视为重中之重。但是,对于初接触者而言,对数据中台的定义可能存在一些模糊。 下面我们将讨论和讲解对企业建设数据中台的3点建议&#…

小型机房380V断电报警门磁开关状态检测远程控制RTU

在现代社会中,小型机房起到了至关重要的作用,为各种系统和设备提供稳定的电力供应。然而,由于各种原因,如供电故障、设备故障或非法侵入等,机房的正常运行可能会受到威胁。为了保障机房的安全和可靠性,我们…

使用WildCard充值ChatGPT Plus 会员

登录 wildCard官网 基于国内手机号注册账号,使用支付宝验证付款即可自动申请国外银行卡,WildCard的开卡费是9.9美元, 没有后续的月费用.订阅chatgpt plus会员服务的操作图文指南见链接 chatgpt plus会员订阅指南

ROS 通信机制

ROS是一个分布式框架,为用户提供多节点(进程)之间的通信服务,所有软件和功能都建立在这种分布式通信机制上,ROS的通信机制是最底层也是最核心的技术。 一、话题通信机制 话题在 ROS 中使用最为频繁,其通信…

基于JavaWeb+SpringBoot+Vue房屋租赁系统微信小程序系统的设计和实现

基于JavaWebSpringBootVue房屋租赁系统微信小程序系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 21世纪是信息的时代,是网络的时代,进入信息社会高速…

[Python学习笔记]Requests性能优化之Session

Requests 可是说是 Python 中最常用的库了。用法也非常简单,但是想真正的用的好并不容易。 下面介绍一个提升性能小技巧:使用 session 会话功能。 以下是 Requests 官网的介绍: 会话对象让你能够跨请求保持某些参数。它也会在同一个 Sessio…

LeetCode之二叉树

发现更多计算机知识,欢迎访问Cr不是铬的个人网站 最近数据结构学到二叉树,就刷了刷力扣,写这篇文章也是辅助记忆。 103二叉树锯齿形遍历 要解出本道题,首先要会层次遍历。层次遍历我们都知道用一个队列去实现就行。但是力扣这里…

FSOD论文阅读 - 基于卷积和注意力机制的小样本目标检测

来源:知网 标题:基于卷积和注意力机制的小样本目标检测 作者:郭永红,牛海涛,史超,郭铖 郭永红,牛海涛,史超,郭铖.基于卷积和注意力机制的小样本目标检测 [J/OL].兵工学报. https://…

centOs 6.10 编译 qt 5.15.11

安装依赖库 xcb 依赖库 qt xcb 需要的依赖 如何要用 x11, 就要在编译的时候加上 -xcb 选项,就要安装 xcb 相关的库。 到时可以在 config.log 文件查看,缺少哪个库就安装哪个。 下面是我手动安装的库和对应版本: xcb-proto-1.14.tar.gz x…

部署ChatGLW-6B出现的问题

库问题 版本匹配 cuda 11.1 对应的torch 1.10 版本过高导致编译问题,目前已测试一下版本可以 typing_extensions4.8 transformers4.26.1 gradio3.50.0