> 文章列表 > linux shell case语法(case语句)

linux shell case语法(case语句)

linux shell case语法(case语句)

文章目录

    • case语法

case语法

在 Linux Shell 中,case 语句用于测试一个变量与多个模式(pattern)之间的匹配情况。它类似于 switch 语句,但是比 switch 语句更加灵活。

case 语法如下:

case 变量 in
模式1)命令1;;
模式2)命令2;;
*)默认命令;;
esac

其中,变量是要测试的变量,模式是要匹配的模式,命令是与模式匹配时要执行的命令。每个模式后面必须有两个分号(;;)来表示命令结束。最后一个模式可以使用星号(*)来表示默认情况。

下面是一个例子:

#!/bin/bashecho "请输入一个数字:"
read numcase $num in1)echo "你输入了1";;2)echo "你输入了2";;3)echo "你输入了3";;*)echo "你输入了其他数字";;
esac

在这个例子中,我们首先提示用户输入一个数字,然后使用 case 语句来测试这个数字与模式的匹配情况。如果用户输入的数字是 1,那么就会执行第一个命令;如果是 2,就会执行第二个命令;如果是 3,就会执行第三个命令;如果是其他数字,就会执行默认命令。

需要注意的是,case 语句中的模式可以使用通配符来匹配多个值。例如,使用问号(?)来匹配单个字符,使用星号(*)来匹配任意数量的字符。下面是一个例子:

#!/bin/bash
echo"请输入一个字符串:"
read str
case $str in
[a-z])echo"你输入了一个小写字母";;
[A-Z])echo"你输入了一个大写字母";;
[0-9])echo"你输入了一个数字";;
?)echo"你输入了一个单个字符";;
*)echo"你输入了一个字符串";;
esac

在这个例子中,我们使用了方括号([])来定义模式,其中[a-z]表示匹配任意一个小写字母,[A-Z]表示匹配任意一个大写字母,[0-9]表示匹配任意一个数字,?表示匹配任意一个单个字符,*表示匹配任意数量的字符。