Shell脚本 ——case 条件测试语句

Shell脚本 ——case 条件测试语句


基本介绍: case 语句是Shell脚本中用于条件测试和多分支选择的一种重要结构。它可以根据变量或表达式的值来选择不同的执行路径。case 语句的格式清晰,使用方便,尤其适用于需要根据多个条件执行不同操作的场景。


基本格式:

case 变量 in
  模式1)
    # 当变量匹配模式1时执行的代码
    ;;
  模式2)
    # 当变量匹配模式2时执行的代码
    ;;
  *)
    # 默认执行的代码(相当于else)
    ;;
esac

基本用法:
1、变量匹配: case 语句根据变量的值进行匹配,执行与模式匹配的代码块。
2、模式匹配: 支持简单的字符串匹配和通配符模式(如 * , ? 等)。
3、默认分支: 使用 * 作为默认分支,当没有其他模式匹配时执行该分支中的代码。
4、结束符号: 每个分支的代码块以 ;; 结束,整个 case 语句以 esac 结束。


使用实例:
示例1:基本用法

#!/bin/bash
echo "Enter a number between 1 and 3:"
read num
case $num in
  1)
    echo "You entered one."
    ;;
  2)
    echo "You entered two."
    ;;
  3)
    echo "You entered three."
    ;;
  *)
    echo "You did not enter a number between 1 and 3."
    ;;
esac

示例2:使用通配符

#!/bin/bash
echo "Enter a file extension (e.g., .txt, .sh, .jpg):"
read ext
case $ext in
  *.txt)
    echo "You entered a text file extension."
    ;;
  *.sh)
    echo "You entered a shell script file extension."
    ;;
  *.jpg | *.jpeg)
    echo "You entered an image file extension."
    ;;
  *)
    echo "Unknown file extension."
    ;;
esac

示例3:处理多个条件

#!/bin/bash
echo "Enter a choice (start/stop/restart):"
read choice
case $choice in
  start)
    echo "Starting the service..."
    ;;
  stop)
    echo "Stopping the service..."
    ;;
  restart)
    echo "Restarting the service..."
    ;;
  *)
    echo "Invalid choice. Please enter start, stop, or restart."
    ;;
esac

示例4:忽略大小写

#!/bin/bash
echo "Enter a character (y/n):"
read char
case $char in
  [yY])
    echo "You entered yes."
    ;;
  [nN])
    echo "You entered no."
    ;;
  *)
    echo "Invalid input."
    ;;
esac

注意点:
1、匹配模式: case 语句中的模式支持通配符(* 匹配任意字符串,? 匹配单个字符)。
2、防止空输入: 如果输入可能为空,建议在模式中增加相应处理,以避免脚本执行错误。
3、分支结束: 每个分支的代码块必须以 ;; 结束,表示结束当前分支。
4、默认处理: 通常最好包含 * 分支来处理所有未匹配的情况。


 更多内容请参考 Shell 脚本专栏。
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Darrich

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

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

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

打赏作者

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

抵扣说明:

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

余额充值