当前位置: 首页 > news >正文

shell脚本之case 的用法

shell脚本之case


case是Shell脚本中的一种控制流语句,它允许根据变量的值选择不同的执行路径。case语句的语法如下:

case word in  pattern [| pattern]...) command-list ;;  pattern [| pattern]...) command-list ;;  ...  *) command-list ;;  
esac

在这个语法中,word是一个要检查的字符串或变量。pattern是一个要与word进行匹配的模式,可以是一个字符串、正则表达式或者一个列表。如果word与某个模式匹配,那么将执行相应的command-list。

下面是一些使用case语句的示例:

1)字符串匹配

#!/bin/bash  fruit="apple"  case $fruit in  apple)  echo "It's an apple." ;;  banana) echo "It's a banana." ;;  *)      echo "It's an unknown fruit." ;;  
esac

在这个例子中,case语句检查变量fruit的值。如果值是"apple",则输出"It’s an apple.“;如果值是"banana”,则输出"It’s a banana.“;否则,输出"It’s an unknown fruit.”。
2.)正则表达式匹配

#!/bin/bash  number=5  case $number in  1|2|3)   echo "It's a small number." ;;  4|5|6)   echo "It's a medium number." ;;  7|8|9|10) echo "It's a large number." ;;  *)       echo "It's an unknown number." ;;  
esac

在这个例子中,case语句使用正则表达式来匹配变量number的值。如果值是1、2或3,则输出"It’s a small number.“;如果值是4、5或6,则输出"It’s a medium number.”;如果值是7、8、9或10,则输出"It’s a large number.“;否则,输出"It’s an unknown number.”。
3)列表匹配

#!/bin/bash  color="red"  case $color in  red|green|blue)   echo "It's a primary color." ;;  yellow|orange|purple) echo "It's a secondary color." ;;  *)       echo "It's an unknown color." ;;  
esac

在这个例子中,case语句使用一个列表来匹配变量color的值。如果值是"red"、“green"或"blue”,则输出"It’s a primary color.“;如果值是"yellow”、“orange"或"purple”,则输出"It’s a secondary color.“;否则,输出"It’s an unknown color.”。
4)使用通配符

#!/bin/bash  file="example.txt"  case $file in  *.txt)   echo "It's a text file." ;;  *.doc|*.docx) echo "It's a Word document." ;;  *.pdf)   echo "It's a PDF document." ;;  *)      echo "It's an unknown file type." ;;  
esac

在这个例子中,case语句使用通配符来匹配变量file的值。如果值是以".txt"结尾的字符串,则输出"It’s a text file.“;如果值是以”.doc"或".docx"结尾的字符串,则输出"It’s a Word document.“;如果值是以”.pdf"结尾的字符串,则输出"It’s a PDF document.“;否则,输出"It’s an unknown file type.”。

http://www.lryc.cn/news/166057.html

相关文章:

  • 第3章 helloworld 驱动实验(iTOP-RK3568开发板驱动开发指南 )
  • 基于PyTorch使用LSTM实现新闻文本分类任务
  • Flutter插件的制作和发布
  • 【JAVA】异常
  • 合同矩阵充要条件
  • 数据分析三剑客之Pandas
  • Spring Boot自动装配原理
  • VMware Workstation虚拟机网络配置及配置自动启动
  • 智能语音机器人竞品调研
  • 【操作系统】进程的概念、组成、特征
  • 大二第二周总结
  • JDK、eclipse软件的安装
  • 235. 二叉搜索树的最近公共祖先 Python
  • Apollo介绍和入门
  • 一文看懂Oracle 19c OCM认证考试(需要Oracle OCP证书)
  • 回归预测 | MATLAB实现PSO-SDAE粒子群优化堆叠去噪自编码器多输入单输出回归预测(多指标,多图)
  • python自学
  • 元宇宙安全与著作权相关市场与技术动态:韩国视角
  • springboot整合neo4j--采用Neo4jClient和Neo4jTemplate方式
  • 【算法与数据结构】701、LeetCode二叉搜索树中的插入操作
  • 前端--HTML
  • 安装配置 zookeeper(单机版)
  • 2023/9/7 -- C++/QT
  • 2023年09月IDE流行度最新排名
  • MyBatis基础之概念简介
  • 解决 SQLyog 连接 MySQL8.0+ 报错:错误号码2058
  • Linux内核4.14版本——drm框架分析(11)——DRM_IOCTL_MODE_ADDFB2(drm_mode_addfb2)
  • mysql的date_format()函数格式月份的坑
  • 保姆级式教程:教你制作电子画册
  • 探究Nginx应用场景