首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux中case的用法

基础概念

case 是 Linux shell 脚本中的一种控制结构,用于根据不同的条件执行不同的命令序列。它类似于其他编程语言中的 switch 语句。case 语句允许你根据变量的值来选择执行哪一段代码。

语法

代码语言:txt
复制
case $variable in
    pattern1)
        command1
        ;;
    pattern2)
        command2
        ;;
    ...
    *)
        default_command
        ;;
esac
  • case 关键字开始一个 case 语句。
  • $variable 是要检查的变量。
  • in 关键字引入模式列表。
  • pattern1, pattern2, ... 是匹配模式,可以是字符串、通配符或其他正则表达式。
  • 每个模式后面跟着一对括号 (),然后是要执行的命令。
  • 双分号 ;; 表示结束当前模式块。
  • *) 是默认模式,当没有其他模式匹配时执行。
  • esac 关键字结束 case 语句。

优势

  • 简洁性case 语句可以使代码更加简洁,特别是当你有多个条件分支时。
  • 可读性:通过使用模式匹配,代码的可读性更高,逻辑更清晰。
  • 灵活性:支持通配符和正则表达式,使得模式匹配更加灵活。

类型

  • 简单模式匹配:直接匹配字符串。
  • 通配符匹配:使用 *, ?, [...] 等通配符进行匹配。
  • 正则表达式匹配:使用 =~ 运算符进行正则表达式匹配。

应用场景

  • 菜单系统:根据用户输入选择不同的操作。
  • 配置文件解析:根据配置文件中的不同选项执行不同的配置步骤。
  • 状态机:根据程序的不同状态执行不同的操作。

示例代码

代码语言:txt
复制
#!/bin/bash

echo "请输入一个数字(1-3):"
read number

case $number in
    1)
        echo "你选择了 1"
        ;;
    2)
        echo "你选择了 2"
        ;;
    3)
        echo "你选择了 3"
        ;;
    *)
        echo "无效的选择"
        ;;
esac

遇到的问题及解决方法

问题:case 语句中的模式匹配不生效

原因:可能是由于模式匹配的语法错误,或者变量未正确赋值。

解决方法

  1. 检查模式匹配的语法是否正确。
  2. 确保变量已正确赋值。
代码语言:txt
复制
#!/bin/bash

echo "请输入一个数字(1-3):"
read number

case $number in
    [1])
        echo "你选择了 1"
        ;;
    [2])
        echo "你选择了 2"
        ;;
    [3])
        echo "你选择了 3"
        ;;
    *)
        echo "无效的选择"
        ;;
esac

问题:case 语句中的命令执行失败

原因:可能是由于命令本身有误,或者环境问题导致命令无法执行。

解决方法

  1. 检查命令的语法和逻辑是否正确。
  2. 确保环境中有执行该命令所需的工具或库。
代码语言:txt
复制
#!/bin/bash

echo "请输入一个数字(1-3):"
read number

case $number in
    1)
        ls -l /nonexistent_directory  # 这个目录不存在,会报错
        ;;
    2)
        echo "你选择了 2"
        ;;
    3)
        echo "你选择了 3"
        ;;
    *)
        echo "无效的选择"
        ;;
esac

参考链接

希望这些信息对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • MySql 中 case when then else end 的用法

    when sex='2' then '女' -------------sex='2',则返回值'女'       else 0                 -------------其他的返回...'其他’     end                    -------------结束 from   sys_user            --------整体理解: 在sys_user表中如果...sex='1',则返回值'男'如果sex='2',则返回值'女' 否则返回'其他’ ---用法一: SELECT              CASE WHEN STATE = '1' THEN '成功...                 WHEN STATE = '2' THEN '失败'             ELSE '其他' END               FROM  SYS_SCHEDULER ---用法二...varchar2(20) not null,  Fage number not null,  Fsalary number not null  );  假如数据量很大约1000万条;写一个你认为最高效的SQL

    1.1K20

    java case when用法_sql case when 嵌套

    大家好,又见面了,我是你们的朋友全栈君。 前几天在客户环境遇到一个Spark “CASE WHEN”语句的性能优化问题。 客户那边通过一个“时间范围筛选”控件来动态修改图表的数据。...CASE WHEN语句有些类似于编程语言中的Switch语句,当这里的 WHEN从句只有一个的时候,可以简化为IF语句(或者 IF-ELSE 语句)。...那是不是我的机会来了。 首先、这个应该是一个比较简单的优化,比如我是否可以通过增加一个Spark的优化器规则,来自动把一个分支的CASE WHEN转为IF,看着好像不难。...虽然我感觉更适合放在优化器中做,不过直接修改 CaseWhen 这个类的 doGenCode() 可能简单直接!...IF 比 CaseWhen 要快很多 (30秒 vs 56秒) 虽然没有为Spark贡献成,但是也了解到了Spark 3.0的一些细节优化已经可以解决现在的一些实际问题了,Spark 3.0.1 值得期待应用到产品中

    3.1K30

    Linux中符号的用法

    1.“;”分号用法 方式:command1 ; command2 用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。....“|”管道符用法 方式:command1 | command2 上一条命令的输出,作为下一条命令的参数传入 3.“&”符号用法 方式:command1 & &放在启动参数后面表示设置此进程为后台进程...4.“&&”符号用法 逻辑与的功能 方式:command1 && command2 [&& command3 ...] shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量...中。当 $? == 0 时,表示执行成功;当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。....“||”符号用法 逻辑或的功能 方式:command1 || command2 [|| command3 ...] 只有在 || 左边的命令返回假(命令返回值 $?

    3.4K20

    Linux中ln的用法

    ln是linux中一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录...文件系统链接 基本语法 ln的用法跟cp和mv相似: ln -s 注意 -s标志指定软链接。如果省略此标志,则默认情况下会创建硬链接。 您可以为文件和目录创建符号链接。...但是,符号链接的权限是从它们的源继承的,所以如果不使用sudo,您就不能在这个目录中写入或删除文件。...example.com/public_html/目录中,但您希望许多用户能够在/home/目录中访问此目录,则可以在/home/目录中创建指向的多个符号链接至/srv/www/example.com/public_html...如果您希望将Web服务器配置文件保留在版本控制中,以便可以在项目和服务器之间轻松更新和共享它们,则可以将文件保存在主目录中的Git存储库中,并为NGINX或Apache配置创建符号链接目录: mkdir

    3.4K60

    Linux中chmod用法

    Linux中chmod用法 chmod:对文件权限进行修改。...(group):表示和文件所有者相同组的用户; o(other):表示非文件所有者和相同group的用户; a(all):表示所有用户; [±=]表示: +:表示给指定的用户授权指定的权限; -...: 表示撤销指定用户的某个权限; =: 将指定用户的指定权限重新设置; [rwx]表示: r:可读权限; w:可写权限; x:可执行权限; 2、chmod用法 (1)给文件所有者设置可读权限...test.txt 3、777的用法 chmod可以使用八进制数来指定权限,无需再使用指定的权限和用户的字母来进行标识,通过读写执行等3个权限的数字来进行设置 数值 权限 字母 7 读+写+执行 rwx...因为文件的权限分为3种用户,分别为u(文件所有者)、g(文件的组用户)、o(其他用户),所以777表示u、g、o都是777的权限。

    7.5K20

    ABAP之opensql 的case..when用法

    在SAP中,以前的ECC6版本之前的内容是不支持这种用法de, 你就只能取出关联字段,在通过loop 循环结合IF判断的情况进行赋值修改....在HANA版本中新增加了 CASE...WHEN 的用法.大大的减少了工作中的代码量. 技术解析 在opensql 中,我们通过sql 语句,进行查询数据时,插入对应的case..when 用法....as 字段名 基本上与SQL中的用法毫无差别,就是简单的逻辑学判断 ....结果 case ... when 用法 循环+ read读写入用法 可见结果是一样的,但是代码最少少写了几十行 ,当然我这还是简单的案例,当然仅仅起的是抛砖引玉的作用....技术总结 今天讲述的是HANA中的新语法,CASE...WHEN的详细使用方式,及案例对比,学会了这种使用用法,在面对简单逻辑是,我们可以减少非常的是代码编写,从而提高效率 .

    1.4K30

    linux通配符的用法_linux中rmdir命令

    大家好,又见面了,我是你们的朋友全栈君。 注意:linux通配符和三剑客(grep,awk,sed)正则表达式是不一样的,因此,代表的意义也是有较大区别的。...通配符一般用户命令行bash环境,而linux正则表达式用于grep,sed,awk场景。 *:通配符,代表所有(0到多个)字符 ?...:通配符,代表任意1个字符 ;:连续不同命令的分隔符 #:配置文件注释 |:管道 ~:当前用户的家目录 -:上一次所在的路径 $:变量前需要加的符号 /:路径分隔符号,也是根的意思 >或1>:重定向,覆盖原有数据...:逻辑运算中的“非”(not) &&:and 并且,当前一个指令执行成功时,执行后一个指令 ||:or 或者,当前一个指令执行失败时,执行后一个指令 ..:两个点代表上一级目录 ....如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3K20
    领券