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

你可能感兴趣的:(Linux,linux,运维)