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 in
    1)
        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,则执行另一个命令,以此类推。注意最后一个分支匹配多个扩展名,用“ |”分隔。如果文件扩展名不在列表中,则执行默认命令。

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,关于您的问题,我可以回答。 在shell脚本case语句通常用于对变量的不同取值进行比较。语法格式如下: ``` case 变量名 in 模式1) command1 command2 ;; 模式2) command3 command4 ;; *) command5 command6 ;; esac ``` 其,变量名是要比较的变量,模式1和模式2是要比较的取值,星号(*)表示其他所有取值。每个模式后面必须跟两个分号(;;),表示执行完当前分支后,跳出整个case语句。 当变量名的取值与某个模式匹配时,case语句就会执行该模式下的所有命令,直到遇到两个分号或者整个case语句结束。如果所有模式都不匹配,则执行星号(*)下的所有命令。 ### 回答2: 在shell脚本case语句用于在多个选项进行条件匹配。它类似于一系列的if-else语句,但比if-else更加灵活和简洁。 case语句的语法如下: ``` case 变量 in 模式1) 命令序列1;; 模式2) 命令序列2;; ... *) 默认命令序列;; esac ``` case语句由关键字case开始,后跟要匹配的变量。接着使用in关键字分隔出多个模式和相应的命令序列。每个模式后面都要有一个圆括号,并以双冒号结束命令序列,最后使用esac关键字结束整个case语句。 在case语句,模式可以是简单字符串、通配符或正则表达式。当变量与某个模式匹配时,对应的命令序列会被执行。如果没有模式匹配时使用了通配符“*”,则执行默认命令序列。 case语句与多个if-else语句相比,更适用于对同一变量进行多个模式的匹配。它可以使代码更加简洁和易读,并且不需要使用复杂的逻辑运算符来组合条件判断。 下面是一个简单的案例: ``` #!/bin/bash read -p "请输入一个数字: " num case $num in 1) echo "不及格";; 2) echo "及格";; 3) echo "等";; 4) echo "良好";; 5) echo "优秀";; *) echo "无效的输入";; esac ``` 在这个案例,根据用户输入的数字,输出对应的成绩评级。如果输入的数字是1,输出“不及格”,如果是2,输出“及格”,以此类推。如果输入的数字在选项之外,则输出“无效的输入”。 总之,case语句是shell脚本非常有用的条件语句,可以用于在多个选项进行条件匹配,使得代码更加简洁、可读性更高。 ### 回答3: 在shell脚本case语句是一种条件选择结构,可以用来进行多种情况的判断和处理。它的用法类似于其他编程语言的switch语句。 case语句的基本语法为: ``` case 变量 in 模式1) 执行语句1 ;; 模式2) 执行语句2 ;; ... *) 默认执行语句 ;; esac ``` case语句,变量可以是任意的字符串或整数。每个模式都以小括号括起来,在模式之后需要加上双括号。如果模式匹配成功,则执行相应的语句,并以两个分号(;;)结束一个模式的执行。通常,每个模式都应该以通配符*作为结尾,并且最后一个模式通常使用星号*作为默认模式来处理所有其他未匹配的情况。 case语句可以使用多个模式,每个模式之间用竖线|分隔。匹配时,case语句会逐个检查每个模式,直到找到匹配的模式为止。一旦找到匹配的模式,就会执行相应的语句并自动跳出case语句。 case语句的使用可以帮助处理多种不同的情况,比如根据用户输入的参数执行不同的功能、根据文件的扩展名进行不同的处理、根据不同的操作系统执行不同的命令等等。通过使用case语句,可以使脚本更加灵活和可读性更高。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂冄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值