我使用过的Linux命令之case - Bash的多分支判断语句

我使用过的Linux命令之case - Bash的多分支判断语句

本文链接:http://codingstandards.iteye.com/blog/781017    (转载请注明出处)

 

用途说明

case结构用于多种情况的条件判断。类似于其他编程语言中的switch/case语句,但从语法形式上讲,有很大的不同。

常用格式

case 字符串 in

    模式)

        语句

        ;;

    模式2 | 模式3)

         语句

         ;;

    *)

         默认执行的 语句

         ;;

esac

提示:esac就是case反过来写。

使用示例

示例一

show_baby() {
    case $1 in
	    男 | M)
		    echo "是位小少爷"
			;;
		女 | F)
		    echo "是位小千金"
			;;
		*)
		    echo "有没有搞错"
			;;
	esac
}

show_baby 男
show_baby M
show_baby 女
show_baby F
show_baby 0

 

[root@jfht ~]# show_baby() {
>     case $1 in
>     男 | M)
>     echo "是位小少爷"
> ;;
> 女 | F)
>     echo "是位小千金"
> ;;
> *)
>     echo "有没有搞错"
> ;;
> esac
> }
[root@jfht ~]#
[root@jfht ~]# show_baby 男
是位小少爷
[root@jfht ~]# show_baby M
是位小少爷
[root@jfht ~]# show_baby 女
是位小千金
[root@jfht ~]# show_baby F
是位小千金
[root@jfht ~]# show_baby 0
有没有搞错
[root@jfht ~]#

 

示例二 init脚本

#!/bin/bash
#
#       /etc/rc.d/init.d/atd
#
# Starts the at daemon
#
# chkconfig: 345 95 5
# description: Runs commands scheduled by the at command at the time \
#    specified when at was run, and runs batch commands when the load \
#    average is low enough.
# processname: atd

# Source function library.
. /etc/init.d/functions

test -x /usr/sbin/atd || exit 0

RETVAL=0

#
#       See how we were called.
#

prog="atd"

start() {
        # Check if atd is already running
        if [ ! -f /var/lock/subsys/atd ]; then
            echo -n $"Starting $prog: "
            daemon /usr/sbin/atd
            RETVAL=$?
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/atd
            echo
        fi
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc /usr/sbin/atd
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/atd
        echo
        return $RETVAL
}


restart() {
        stop
        start
}

reload() {
        restart
}

status_at() {
        status /usr/sbin/atd
}

case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload|restart)
        restart
        ;;
condrestart)
        if [ -f /var/lock/subsys/atd ]; then
            restart
        fi
        ;;
status)
        status_at
        ;;
*)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $?
exit $RETVAL
 

[root@smsgw root]# ls -l /etc/init.d/atd
-rwxr-xr-x    1 root     root         1176 2004-10-06  /etc/init.d/atd
[root@smsgw root]# service atd
Usage: /etc/init.d/atd {start|stop|restart|condrestart|status}

[root@smsgw root]# service atd status
atd (pid 1899) is running...

[root@smsgw root]# service atd restart
Stopping atd:                                              [  OK  ]
Starting atd:                                              [  OK  ]
[root@smsgw root]#

 

问题思考

1. case命令中的模式可以有哪些?

2. 总结一下init脚本的写法。

相关资料

【1】Bash Guide for Beginners 7.3. Using case statements    7.3. 使用case语句

【2】鸟哥的私房菜 利用 case ..... esac 判斷

【3】Unix/Linux shell程序设计-<控制结构>-case语句 - 日志 - neverTheSame - 编程中国

 

返回 我使用过的Linux命令系列总目录

 

『现学现忘』Shell编程 — 35、多分支case条件语句 文章目录1、case条件语句介绍2、case语句需要注意的内容3、练习示例1示例2 1、case条件语句介绍 case语句和if…elif…else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。 case语句语法如下: case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; …省略其他分支… *) 如果变量的值都不 阅读详情

相关推荐

【Linux】shell脚本实战-流程控制语句case

文章目录前言什么是case语句case语句语法分析case实战案例1. 做出你的选择2. 早饭吃什么3. apache服务启动脚本实战总结 前言 前面我们探讨过shell脚本中的if语句,单分支,双分支以及多分支的写法,今天我来看另一个流程控制语句case。 什么是case语句 控制语句:用来实现对程序流程的选择、循环、转向和返回等进行控制; case 语句和 if…elif…else 语句一样都是多分支条件语句,不过和多分支 if 条件语句不同的是,case 语句只能判断一种条件关系,而 if 语句可以

互联网老辛 3063

介绍Bash Case 语句

介绍Bash Case 语句 本文介绍bash中case语句的语法。case语句通常用于简化多种不同选择的复杂条件场景,使用case代替if使得脚本代码更易读、易维护。 case语句与C语言、javasc中的switch语句类似。与C不同的是,一旦Bash中case语句匹配了一个条件并执行语句,则不再继续搜索后续匹配条件,相当于自动增加了break语句。 1. case语句语法 语法结构如下: case EXPRESSION in PATTERN_1) STATEMENTS ;;

neweastsun的专栏 4360

Python量化交易实战:从零搭建你的第一个多因子选股模型(附完整代码)

本文是一份详细的Python量化交易入门实战指南,手把手教你从零搭建第一个多因子选股模型。内容涵盖环境配置、数据获取、因子挖掘与有效性检验、多因子合成以及完整的策略回测与绩效评估,并附有可直接运行的完整代码,帮助初学者快速掌握量化交易的基本概念与实践流程。

resnet7explorer的博客 931

bash编程之case语句

一、语法格式case 变量引用(${}) invalue1) #变量的值是value1,则执语句1,语句2,······ 语句1 语句2 ······ ;; #每个分支结束时都需要以双分号结尾value2) #变量的值是value2,则执语句3,语句4,······ 语句3 语句4 ······ ;;val...

weixin_34279579的博客 362

深圳SILAS(智能融合低空系统)无人机调度系统介绍

一、系统定位与核心目标SILAS(Smart Integrated Lower Airspace System)是深圳市为低空经济打造的“数字大脑”,由粤港澳大湾区数字经济研究院自主研发,定位为城市级低空飞行智能调度与管理平台。核心目标是解决低空经济中“高密度、高复杂度、多主体”的飞行调度难题,实现空域资源的高效分配、飞行安全的智能监管及全场景服务的无缝协同,支撑深圳从“无人机之都”向“天空之城”升级。二、核心架构:低空基础设施“四张网”设施网。

主攻大数据 人工智能 物联网 安全 低空经济等方向。mtsc 、gtest特邀分享嘉宾 3741

RTPS规范v2.3(中文版)

DDSI-RTPSv2.3,DDS发现互操作性-实时发布订阅通信协议,中文版

pony12的专栏 752

Bash脚本中的分支控制:深入理解Case语句

深入理解Bash的Case语句。

bxstephen的专栏 1044

固定时间收敛的控制器设计(基础知识)

针对控制系统的有限时间收敛和固定时间收敛给出一些常用定理。

qq_40241332的博客 1万+

Linux之case语句和循环语句

case语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,而case语句只是判断一个变量的不同取值。

g_l_d_y的博客 3453

Robot Arm 机械臂源码解析

由于我们用的是步进电机,运动的时候是一步一步的,并不是平滑的,这里假设在一个平面上面,一个x步进电机,一个y步进电机。那么放大它们所走的轨迹就会是阶梯状的。而它们也只能沿着网格运动。相当于有了一个最小的分辨率,这个分辨率就是一步。如下图所示,如果x,y电机同时走就能走出45度的斜线。在三维空间里面运动也是如此,你应该可以想象的出来;首先,是updateActualPosition,用来时时更新此时的差补位置,得到的是一个路径与时间t的函数(其中路径的范围为0,1,时间范围为0,dist/v)...

爱吃炸鸡的小猪's blog 1万+

Mplus实战:三变量随机截距交叉滞后模型(RI-CLPM)语法详解与扩展

本文详细解析了Mplus中三变量随机截距交叉滞后模型(RI-CLPM)的构建原理与语法实现。通过将变量分解为稳定的个体间差异与动态的个体内波动,模型能更纯净地揭示多变量间的纵向交互影响。文章以工作压力、睡眠质量与工作满意度为例,提供了完整的语法模板、关键参数设置(如NOCOV命令、残差相关)及结果解读指南,帮助研究者避开常见误区,稳健分析复杂动态关系。

wdx0123456的博客 926

Bash中的if条件分支

共有三种形式:     第一种最简单的形式为: if [ expression ] ; then statements fi     第二种形式为: if [ expression1 ]; then statements1 else statements0 fi

相信并热爱着 1590

别再死记硬背了!用LTspice和Simulink仿真,5分钟搞懂巴特沃斯、切比雪夫、贝塞尔滤波器的区别

本文通过LTspice和Simulink仿真工具,直观对比了巴特沃斯、切比雪夫和贝塞尔滤波器的特性差异。从通带波纹、过渡带陡峭度到相位线性度,详细解析了三种经典滤波器的设计哲学与应用场景,帮助工程师和学生快速掌握滤波器选型技巧,提升电路设计效率。

weixin_33910191的博客 523

Linux Bash Shell编程(九):流程控制语句(上) 分支语句(if、case)

Linux Bash Shell编程(九):流程控制语句(上) 分支语句(if、case)   上一节中,我们学习了Bash中各种类型的条件判断语句。在Bash中,流程控制是条件判断语句的最终目的,条件判断语句是流程设计的基础条件。本节开始我们就来一起探索Bash中的流程控制语句,首先我们会了解到分支语句if与case if 判断语句  简介   流程控制是编程语言基础中的基础,if语句和case语句一起实现了程序语言的三种结构(顺序结构、分支结构、循环结构)之一的分支结构。简单说,if语句判断了条

Zheng__Huang的博客 4314

YOLOv12涨点改进 | CVPR 2026 |独家创新首发、特征融合改进篇 | 引入Local Attender 局部注意力算子融合模块,高效捕捉小目标和密集目标的局部上下文特征,助力高效涨点

🚀本文提出LocalAttender模块改进YOLOv12模型,通过局部注意力机制解决传统上采样方法的语义漂移问题。该模块采用固定偏移邻域加权聚合方式,在保持线性计算复杂度的同时有效捕捉小目标和密集目标的局部特征。实验表明,LocalAttender能显著提升检测精度而不增加过多计算负担,且与YOLOv12兼容性强。文章详细介绍了模块原理、实现方法和配置步骤,并提供了两种改进方案的具体yaml配置文件。这一创新为提升目标检测性能提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 118

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

9.Shell 脚本 case 语句全解析:语法结构、模式匹配及多分支判断实战

本文介绍了Shell脚本中case条件语句的应用实践。case语句是多分支条件判断工具,比if/elif更规范,常用于系统服务脚本开发。文章详细讲解了case语句的语法结构、执行逻辑和实际应用场景,包括判断用户输入数字、字符串颜色输出等基础案例,以及企业级生产案例(如sshd服务控制脚本和用户管理系统)。通过具体代码示例和中文形象比喻,帮助读者理解case语句的工作原理和实际应用价值,适合Shell脚本初学者和系统管理员学习参考。

专注于云计算 990

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Shell多分支case语句

一 语法 case语法和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。 case $变量名 in "值1") 如果变量的值等于1,则执行程序1 ;; "值2") 如果变量的值等于1,则执行程序2 ;; ...省略其他分支.. *) 如果变量的值都不是以上的值,则执

实践求真知 1498

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

if 语句 和 case 语句

提示用户输入内容,使用 if 语句判断输入的内容是否为整数。再判断输入的内容是奇数还是偶数。提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,要求如果命令选项不对,则提示输入不正确: {start|stop|status|restart}:双中括号的功能更强大,适用于复杂的表达式,可以避免歧义。先设定一个条件,判断条件是否满足,执行一段特定的代码。男生进男生组,女生进女生组,如果输入错误请提示错误。:功能比较适用于简单的条件判断。不满足,执行不满足的代码。

云计算练习生X的博客 1481

linux脚本编程if[-z],Linux基础之bash脚本编程进阶篇-选择执行语句(if,case)

bash脚本的书写规范简介看本文需要了解的脚本撰写习惯:bash开头顶格写#!紧接着写解释器路径/bin/bash由于bash属于脚本语言,脚本语言的运行方式解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行Linux中的脚本解释器有:zsh,csh,bash,tsh众多shell,不过bash最常用。第一行写完之后,就可以直接写代码。不过为了便于他人阅读通常会增加如下行:第二...

weixin_42423817的博客 6646

Linux系统——条件语句

条件测试 test [ ] [[ ]] 且 或 if语句 单分支 双分支 多分支 case语句

一坨小橙子的博客 3823

Linux shell编程学习笔记20:case ... esac、continue 和break语句

在实际编程中,我们有时会请到多条件多分支选择的情况,用if…else语句来嵌套处理不烦琐,于是JavaScript等语言提供了多选择语句switch ... case。与此类似,Linux Shell脚本编程中提供了case...in...esac 语句,来实现多条件多分支选择结构:其语法结构为:case 变量名 in值1[|值2……])命令1[...][命令N];;[...]值a[|值b……])命令a[...][命令b][break];;[*)]

Purpleendurer@优快云 2709

SHELL脚本之条件判断——if语句

如上图所示,当执行脚本出现在我们电脑屏幕上的信息对于我们来说,并无用处的时候,为了节省系统资源,保持系统性能,可以使用重定向符号将出现的内容交给/dev/null即系统中的黑洞文件中。如上图所示,这个内容的脚本在我们第一次执行的时候肯定没有问题但是当第二次执行的时候,肯定就会报错了。为了让脚本的执行更加符合人工作的逻辑。所以要加上条件判断。

ZHX2285的博客 4865

【Linux】Shell 脚本中的条件判断语句

本文介绍了Shell脚本中条件判断语句的使用方法,包括基础if语句结构、多分支判断以及条件测试命令。通过对比Java代码示例,帮助开发者理解Shell条件判断的逻辑。文章详细讲解了文件测试、字符串比较和数值比较操作符,并分析了[[ ]]与[ ]的区别。Shell脚本依赖退出状态码进行条件判断,语法简洁但缺乏IDE支持,适用于系统级自动化任务。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

Shell脚本判断语句

一、条件测试操作 test命令 测试表达式是否成立,若成立返回0,否则返回其他数值 > 格式 1:test 条件表达式 > 格式 2:[ 条件表达式 ] ; 中括号两边需加空格 文件测试 > 1:[ 操作符 文件或目录 ] > 2:&? 返回0表示条件成立,返回非零值表示条件不成立 > 3:&& 逻辑与,"而且"的意思 > 4:|| 逻辑或,"或者"的意思 **常用的测试操作符** |常见的测试操作符|解释 | |--|--|

Rev1e的博客 3524

CASE 条件语句的应用实践

case 条件语句相当于多分支的if/elif/else条件语句,但是它比这些条件语句看起来更规范更工整,常被应用于实现系统服务启动脚本等企业应用场景中。

shizhan_cloud的博客 1103
上一篇: 我使用过的Linux命令之jobs - 显示当前终端关联的后台任务情况
下一篇: 我使用过的Linux命令之screen - 虚拟终端屏幕管理器
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值