shell脚本多个if-then-else判断转换成case语法

你会经常发现自己在尝试计算一个变量对值,在一组可能对值中寻找特定值。这这种情况下,你不得不写很长的if-then-else语句,就像下面这样

#!/bin/bash
  
if [ $USER = "liuyuqiang" ]
then
    echo "Welcome $USER"
    echo "欢迎参观"
elif [ $USER = "testing" ]
then
    echo "Welcome $USER"
    echo "欢迎参观"
elif [ $USER = "jessica" ]
then
    echo "完成后不要忘记注销"
else
    echo "对不起,你不能访问"
fi

执行:

$ ./if_then_else.sh
Welcome liuyuqiang
欢迎参观

有了case命令,就不需要再写出所有的elif语句来不停地检查用一个变量的值了,case命令会采用列表格式来检查单个变量的多个值。

case variable in
pattern1 | pattern2) commands1;;
pattern3) commands2;;
*) default commands;;
esac

case命令会将指定的变量与不同模式进行比较。如果变量和模式是匹配的,那么shell会执行为该模式指定的命令。可以通过竖线操作符在一行中分隔出多个匹配模式。星号会捕获所有与已知模式不匹配的值。

修改后:

#!/bin/bash
  
case $USER in
liuyuqiang | testing)
    echo "Welcome $USER"
    echo "欢迎参观";;
jessica)
    echo "完成后不要忘记注销";;
*)
    echo "对不起,你不能访问";;
esac

执行:

$ ./case_esac.sh
Welcome liuyuqiang
欢迎参观

猜你喜欢

转载自blog.csdn.net/qq_36588424/article/details/108619878