shell——case命令_shell case语句

case语句

  case语句允许进行多重条件选择。其一般语法形式是:

case 字符串 in

模式字符串1) 命令

        …

        命令;;

模式字符串2) 命令

        …

        命令;;

     …

模式字符串n) 命令

        …

        命令;;

esac

  在使用case语句时应注意:

  (1)每个模式字符串后面可有一条或多条命令,其最后一条命令必须以两个分号(即;;)结束。

  (2)模式字符串中可以使用通配符。

  (3) 如果一个模式字符串中包含多个模式,那么各模式之间应以竖线(|)隔开,表示各模式是“或”的关系,即只要给定字符串与其中一个模式相配,就会执行其后的命令表。

  (4)各模式字符串应是惟一的,不应重复出现。并且要合理安排它们的出现顺序。例如,不应将“*”作为头一个模式字符串,因为“*”可以与任何字符串匹配,它若第一个出现,就不会再检查其它模式了。

  (5)case语句以关键字case开头,以关键字esac(是case倒过来写!)结束。

  (6)case的退出(返回)值是整个结构中最后执行的那个命令的退出值。若没有执行任何命令,则退出值为零。

Case --举例
1--1.sh----------------------------------------------------------

#!/bin/sh
echo "enter choice: \c "
read choice
case "$choice" in
1) echo "11111";;
2|22) echo "22222";;
yes|y|Yes|YES)echo "yes|y|Yes|YES";;
[Nn]*) echo "[Nn]*";;
*) echo "sorry"
exit 1;;
esac
exit 0

结果

[hadoop@localhost dzztest]$ ./a1.sh
enter choice: \c
1
11111
[hadoop@localhost d3]$ sh a.sh
enter choice: \c
22
22222
[hadoop@localhost d3]$ sh a.sh
enter choice: \c
2
22222
[hadoop@localhost dzztest]$ ./a1.sh
enter choice: \c
*
sorry
[hadoop@localhost d3]$ sh a.sh
enter choice: \c
yes
yes|y|Yes|YES
[hadoop@localhost d3]$ sh a.sh
enter choice: \c
y
yes|y|Yes|YES
[hadoop@localhost d3]$ sh a.sh
enter choice: \c
n
[Nn]*
[hadoop@localhost d3]$ sh a.sh
enter choice: \c
N
[Nn]*
[hadoop@localhost d3]$ sh a.sh
enter choice: \c
n45
[Nn]*

---Case 举例2--b.sh

#!/bin/sh
user="who am i ?" /*给变量user赋值*/
echo $user
read user /*读入输入的user的值,且取值后面的”in” 必须存在*/
case $user in /*$ueser为值*/
root)echo "you can do everything"/*root为输入的模式一*/
;; /*所有命令开始执行直至;;*/
abc)echo "you just do something"
;;
*)echo "sorry,i dont know you"/*其中如果无任何匹配的,用“*”号表示捕获*/
;;
esac

结果

[hadoop@localhost d3]$ sh b.sh
who am i ?
root
you can do everything
[hadoop@localhost d3]$ sh b.sh
who am i ?
io
sorry,i dont know you
[hadoop@localhost d3]$ sh b.sh
who am i ?
abc
you just do something

2022-9-14

原文链接:,转发请注明来源!