shell的case语句

2023-11-01

case语句格式
# vi test.sh
:
echo "input : "
read num
echo "the input data is $num"

case $num in
1) echo "January";; 双分号结束
2) echo "Feburary";;
5) echo "may" 每个case可以有多条命令
echo "sdfd"
echo "sdf";; 但最后一条命令一定是双分号结束

*) echo "not correct input";; *)是其他值、default的意思

esac
# sh ./test.sh
input :
2
the input data is 2
Feburary

# sh ./test.sh
input :
ter
the input data is ter
not correct input



case 语句如果某个选项没有任何语句,也要加;; 否则会出下边错误
test: line 166: syntax error near unexpected token `)'
test: line 166: `"system hostname config")'

 

匹配符[]是专门针对单字符的值,如果用[no],就是n和o之一

case $yn in
[no]) return 1;;
* ) echo "only accept Y,y,N,n,YES,yes,NO,no" >&2;;
[macg@mac-home ~]$ sh test.sh
enter y/n :
no
only accept Y,y,N,n,YES,yes,NO,no
改正
case $yn in
no) return 1;;
NO) return 1;;
* ) echo "only accept Y,y,N,n,YES,yes,NO,no" >&2;;
esac
[macg@mac-home ~]$ sh test.sh
enter y/n :
no

注意::
如果有多个单词可以用"|"隔开,如

case $yn in

   start | begin ) return 0;;

   end | over ) return 1;;

   * ) return 3;;

 

if, case,匹配字符串最常见,但如何匹配一段很长的输出,一堆文字?最好方法,用“*”,如:*"command not found"*

[macg@machome ~]$ vi test.sh

var=$(ls -l $1) $()取命令输出$1是命令行参数
echo "output is $var"

case $var in
"-rw-rw-r--"*) echo "this is not a execute file";;
"-rwxrwxr-x"*) echo "this is a execute file";
注意*在双引号外边
esac

[macg@machome ~]$ sh test.sh 22.txt
output is -rw-rw-r-- 1 macg macg 15 Jun 9 19:00 22.txt
this is not a execute file

[macg@machome ~]$ chmod +x 22.txt
[macg@machome ~]$ sh test.sh 22.txt
output is -rwxrwxr-x 1 macg macg 15 Jun 9 19:00 22.txt
this is a execute file

这里需要注意的是$(ls -l $1) $()取命令输出

匹配是用两个**,因为整个var的内容是一行,要在两个之间匹配

 

例2.匹配file命令输出的一堆文字,以获知文件类型
用’ ’ 取输出,然后用CASE+*对输出做修饰处理.

var=`file $1` ` `和$( )作用相同,是取命令输出
echo "output is $var"

case $var in
"$1: ASCII text"*) echo "this is a text file";;
"$1: directory"*) echo "this is a directory";;
注意*在双引号外边
esac
[macg@machome ~]$ sh test.sh 22.txt
output is 22.txt: ASCII text
this is a text file

[macg@machome ~]$ sh test.sh test-dir
output is test-dir: directory
this is a directory

 

最典型的shell case命令匹配命令行,用于sys v启动脚本的start|stop|restart|status处理
case "$@" in
($@ 字符串数组:以"参数1" "参数2" ... 的字符串数组形式保存所有参数
对于单个参数的情况,$@就是一个字符串)

start)
echo -n "Starting firewall..."
。。。
echo "OK!"
exit 0
;;
stop)
echo -n "Stopping firewall..."
。。。
exit 0
;;
restart)
$0 stop $0即执行原始程序
$0 start
;;
status)
clear
echo ">------------------------------------------"
iptables -L

转载于:https://www.cnblogs.com/cl1024cl/p/6205675.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell的case语句 的相关文章

  • 使用openssl的md5库

    在linux机器上 有一个命令可以计算出文件的md5值 那就是md5sum 如果没有的话 就需要安装RPM包 coreutils 现在我们使用openssl的库也可以方便的计算出文件的md5值 主要用到的函数是 int MD5 Init M
  • 【单片机】【数码管】数码管显示

    1 数码管的显示器及其接口 单片机系统中 常用的显示器有 发光二极管LED显示器 液晶LCD显示器 TFT液晶显示器 本文主要是关于LED显示器的说明 LED显示器有两种显示结构 段显示 7段 米字型等 和点阵显示 5x8 8x8点阵等 L
  • 成功解决 ProxyError: Conda cannot proceed due to an error in your proxy configuration

    welcome to my blog 希望对大家有帮助 给win10的ubuntu1804安装anaconda 执行conda create n daily python 3 7创建虚拟环境时报错 Collecting package me
  • 计算机网络:HTTP(应用层)

    目录 1 HTTP 基本概述 2 HTTP 的操作过程 3 HTTP 的特点 4 HTTP 的报文结构 5 HTTPS 1 HTTP 基本概述 HTTP是Hyper Text Transfer Protocol 超文本传输协议 的缩写 HT
  • 在React项目中使用Redux实现计数器功能

    Redux 和 React 之间没有关系 Redux 支持 React Angular Ember jQuery 甚至纯 JavaScript 尽管如此 Redux 还是和 React 和 Deku 这类库搭配起来用最好 因为这类库允许你以
  • prompt范式

    1 范式发展历程 P1 非神经网络时代的完全监督学习 Fully Supervised Learning Non Neural Network 特征工程 P2 基于神经网络的完全监督学习 Fully Supervised Learning
  • 转置卷积(Transposed Convolution)

    目录 1 卷积操作及转置卷积的定义 1 1 卷积操作 1 2 转置卷积 1 3 转置卷积的步骤 2 转置卷积的理解 2 1 stride 1转置卷积的理解 2 1 1 一维形式 2 1 2 二维形式 2 1 3 公式计算 2 2 strid
  • 泛型使用时遇到的bug

    首先说 这次的bug理解起来很简单 就是泛型被使用时 泛型的类一定要被引用 前提说明 我建了一个保存预下单数据的接口 然后提供一个查询接口 我就想 每次查出来就是json 那每次都要代码里解析 太重复 为什么不做成泛型 查询时候把类型传入
  • 华农oj数据结构——8581

    8581 线性链表逆置 时间限制 1000MS 代码长度限制 10KB 提交次数 2811 通过次数 2032 题型 编程题 语言 G GCC Description 线性链表的基本操作如下 include
  • CTP 4097错误根源 / CTP程序运行没有反应/CTP版本说明

    其实这本是个很简单的错误 但经常看到有人问到 而且网上居然还出了玄学解答 所以干脆单独写一篇解释一下这个错误 这一篇文章同样适用于解决为什么没有OnFrontConnected回调 Decrypt handshake data failed
  • 记录一次 图片边缘色值问题

    texture wrap mode 设置为clamp
  • 你不知道的测试小技巧——postman接口测试导入导出操作详解

    目录 导出 导入 总结 postman中的集合脚本 环境变量 全局变量全部都可以导出 然后分享给团队成员 导出后的脚本可以通过newman生成测试报告 另外还可以将浏览器 抓包工具 接口文档 swagger 中的数据包导入到postman中
  • NeRF原理解析

    文章目录 引言 NeRF资料 技术基础梳理 算法概览 用神经辐射场 Neural Radiance Field 来表示场景 基于辐射场的体素渲染算法 经典体素渲染算法 数值近似的方法 优化神经辐射场 位置信息编码 Positional en
  • PyQt专题结题感言:Python图形用户界面开发

    PyQt专题结题感言 Python图形用户界面开发 在这篇文章中 我将为您介绍PyQt框架 这是一个功能强大的Python图形用户界面 GUI 开发工具 我将详细解释PyQt的基本概念和用法 并提供一些源代码示例来帮助您入门 PyQt是一个
  • 将两个有序数组合并为一个新的有序数组(Java实现)

    不可否认的是Java确实C语言方便许多 这种写法比我在C中的那种写法要好 代码如下 public class Test public static void main String args int arr1 1 3 5 7 9 int a
  • linux 删除的文件太多:bash:/usr/bin/rm: Argument list too long

    背景 删除一个文件夹内指定后缀的文件时 遇到错误 提示 bash usr bin rm Argument list too long 很明显是指定后缀的文件太多 导致无法删除 解决方案 通过命令find来进行删除 比如要删除所有的json文
  • 基于python+flask实现视频数据可视化

    使用爬虫对视频弹幕进行爬取并保存为csv文件 导入数据库中 进而实现前后端交互功能 数据集中包含的数据分别为爬取的热门视频的标题 播放量 弹幕量 收藏量 综合得分以及视频的类别等信息 便于后续我们进行数据分析 我们使用数据库中的数据评出综合
  • 任务分配的穷举法、匈牙利法、分支定界法

    1 必做 任务分配问题 设有 4 项任务 B1 B2 B3 B4 派 4 个人 A1 A2 A3 A4 去完成 每个人都可以承担 4 项任务中的任何一项 但所消耗的资金不同 设 Ai 完成 Bj 所需资金为 问如何分配任务 使总费用最少 假
  • 无缝漫游的过程!

    无缝漫游中无线AP的配置与普通无线AP的配置基本相同 只是应当注意以下几个方面的问题 所有无线AP必须使用同一SSID 所有无线AP必须使用同一网段的IP地址 并且处于同一VLAN中 信号相互覆盖的无线AP不能使用相同的频道 由于多个AP信
  • 图形分析之Nsight的使用

    作者 i dovelemon 日期 2017 06 11 来源 CSDN 主题 Nsight OpenGL 引言 最开始的时候 我进行图形编程使用的是DX 所以那时候进行图形分析的时候 基本都是使用PIX 后来转向了OpenGL 分析的时候

随机推荐

  • JVM-17(垃圾回收器)上

    目录 17 1 GC分类与性能指标 17 1 1 JVM的发展 17 1 2评估GC的性能指标 17 2 不同的垃圾回收器概述 17 3 Serial回收器 串行回收 17 4 ParNew回收器 并行回收 17 5 Parallel回收器
  • html超链接打开共享文件夹,教你如何访问共享文件夹

    现在我们往往要讲究 资源共享 就是有好的东西跟大家一起分享 那么到电脑上呢经常有一些文件夹 有的是加密的 有的是共享的 今天呢小编就要给大家讲讲如何访问这些共享文件夹 要想查看共享文件夹其实也是有步骤可言的 首先 要先打开控制面板 有一个W
  • 电脑开机就显示360服务器,我用360给电脑杀毒,一直到开机启动项会停止,显示“扫面服务意外终止,无法继续扫描,这可能是由于程序...

    希望我的回答可以帮助楼主解决问题哦 这个问题很明显是杀毒软件自身的问题 不太知道诺顿这款杀毒软件 是不是在升级过程中发生什么问题造成的 楼主可以尝试换用腾讯电脑管家 这款杀毒软件在病毒以及木马的查杀方面很权威 很成熟 下面是我总结的电脑容易
  • ZGC收集器介绍

    ZGC收集器 XX UseZGC ZGC是一款JDK 11中新加入的具有实验性质的低延迟垃圾收集器 ZGC可以说源自于是Azul System公司开发的C4 Concurrent Continuously Compacting Collec
  • OK6410矩阵键盘驱动问题解决方案

    在嵌入式系统开发中 矩阵键盘是一种常见的输入设备 OK6410是一款广泛使用的ARM开发板 本文将介绍如何在OK6410开发板上实现矩阵键盘的驱动 硬件连接 首先 我们需要将矩阵键盘与OK6410开发板进行连接 矩阵键盘通常由多个行和列组成
  • ResNet到底在解决一个什么问题呢?

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 来源 知乎 https www zhihu com question 64494691 文仅交流 侵删 ResNet发布于2015年 目前仍有大量CV任务用其作为back
  • C# 代码转化为Java代码

    http www tangiblesoftwaresolutions com Free Editions html Install Instant C converts VB NET code to C Install Instant VB
  • 史上最全midjourney关键词

    最全midjourney关键词 篇幅太长 文章最后有可编辑版本获取链接 增强图片真实感 清晰度 unreal engine 虚幻引擎 ultra realistic 超真实 photography 摄影图片 detailed 细节 4K 4
  • LaTeX 使用笔记——公式篇

    目录 一 行内公式 二 独立公式 一 行内公式 二 独立公式 一 括号 1 当括号的两边分别位于上下两行公式 且可能出现两个括号大小不一致的情况 例如 使用LaTeX代码 begin aligned dot V k v 1 z k v 1
  • 一次性搞清楚unicode、codepoint、代码点、UTF

    最近在处理字符过滤 重新研究了下字符 unicode和代码点的相关知识 首先要说一下编码的基本知识unicode unicode unicode是计算机科学领域里的一项业界标准 包括字符集 编码方案等 计算机采用八比特一个字节 一个字节最大
  • Python 爬虫获取某贴吧所有成员用户名

    最近想用Python爬虫搞搞百度贴吧的操作 所以我得把原来申请的小号找出来用 有一个小号我忘了具体ID 只记得其中几个字母以及某个加入的贴吧 所以今天就用爬虫来获取C语言贴吧的所有成员 计划很简单 爬百度贴吧的会员页面 把结果存到MySQL
  • FreeMarker模板使用方法讲解

    项目需要 刚接触 正在学习 FreeMarker简介 FreeMarker模板文件主要由如下4个部分组成 1 文本 直接输出的部分 2 注释 lt gt 格式部分 不会输出 3 插值 即 或 格式的部分 将使用数据模型中的部分替代输出 4
  • 深度学习之基于CNN实现汉字版手写数字识别(Chinese-Mnist)

    Mnist数据集是深度学习入门的数据集 昨天发现了Chinese Mnist数据集 与Mnist数据集类似 只不过是汉字数字 例如 一 二 三 等 本次实验利用自己搭建的CNN网络实现Chinese版的手写数字识别 1 导入库 import
  • C++疑难杂症 error LNK2001: 无法解析的外部符号

    问题简述 error LNK2001 无法解析的外部符号 private static int ETH m age m age ETH 0HA 这类问题是我们在编译过程很常见 原因我百度的时候发现也分好几种 有可能是没有包含相应的头文件 也
  • vue 用axios请求接口的使用以及配置

    若依框架前后端分离 用axios请求接口的使用以及配置 首先需要下载安装 cnpm install axios save 安装完成以后进行配置 打开main js import axios from axios Vue prototype
  • .NET静态代码检查工具StyleCop的安装与使用

    最近需要做一个C 项目的代码走查 其中的一项内容就是要用代码的静态分析工具对代码进行检测 我的想法是使用VisualStudio自带的Microsoft托管建议规则外加StyleCop工具检测问题 主要是警告 再对这些问题逐一分析 我使用的
  • cbm+soma+simm ibm的SOA实施方法论

    cbm soma simm ibm的SOA实施方法论http www ibm com developerworks cn webservices 0909 CBM SIMM SOMA soa
  • 如何通过solc编译solidity编写的以太坊智能合约

    solc solidity的编译器 solidity编写的以太坊智能合约可通过命令行编译工具solc来进行编译 成为以太坊虚拟机中的代码 solc编译后最终部署到链上形成我们所见到的各种智能合约 作为一个solidity命令行编译工具 我们
  • 使用chrome开发者工具调试JavaScript代码的三种常用方法

    对 JS 程序的调试 除了在 JS 程序中使用 alert console log 方法跟踪和调试代码外 开发人员也会经常使用一些调试工具 最常用的 JS 调试工具就是一些主流的浏览器的调试工具 如 IE11 浏览器的 开发人员工具 Fir
  • shell的case语句

    case语句格式 vi test sh echo input read num echo the input data is num case num in 1 echo January 双分号结束 2 echo Feburary 5 ec