欢迎来到格策美文网

shell——case命令

更新日期:2025-05-21 08:59

shell——case命令"/

写作核心提示:

标题:Shell——case命令使用注意事项
Shell中的case命令是一种强大的条件语句,它允许用户根据输入值匹配多个模式,并执行相应的命令。在使用case命令时,以下注意事项值得特别注意:
一、正确编写模式匹配
1. 模式匹配时,应使用双分号(;;)分隔每个模式,并确保模式与输入值完全匹配。
2. 对于多个模式匹配,可以使用空格或换行符分隔,以避免误匹配。
3. 在编写模式时,注意大小写敏感性。默认情况下,case命令区分大小写,因此请确保输入值与模式大小写一致。
二、合理使用ESAC
在case语句的最后,应使用ESAC(End of Script, All Commands)作为结束标记。这是shell识别case语句结束的标志,否则可能导致脚本执行异常。
三、注意命令执行顺序
1. 在case语句中,当匹配到第一个符合条件的模式时,将执行该模式对应的命令,并退出case语句。
2. 如果需要执行多个匹配模式对应的命令,请使用花括号({...})将它们括起来,以确保顺序执行。
四、处理未匹配的情况
1. 在case语句的最后,可以使用“”符号来匹配所有未匹配的模式。
2. 在“”符号后,可以编写相应的命令,以处理未匹配的情况。
五、避免使用复杂的模式
1. 尽量使用简单的

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";;
*) echo "*";;
*) echo "sorry"
exit 1;;
esac
exit 0

结果

$ ./a1.sh
enter choice: c
1
11111
$ sh a.sh
enter choice: c
22
22222
$ sh a.sh
enter choice: c
2
22222
$ ./a1.sh
enter choice: c
*
sorry
$ sh a.sh
enter choice: c
yes
yes|y|Yes|YES
$ sh a.sh
enter choice: c
y
yes|y|Yes|YES
$ sh a.sh
enter choice: c
n
*
$ sh a.sh
enter choice: c
N
*
$ sh a.sh
enter choice: c
n45
*

---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

结果

$ sh b.sh
who am i ?
root
you can do everything
$ sh b.sh
who am i ?
io
sorry,i dont know you
$ sh b.sh
who am i ?
abc
you just do something

2022-9-14

热门标签

相关文档

文章说明

本站部分资源搜集整理于互联网或者网友提供,仅供学习与交流使用,如果不小心侵犯到你的权益,请及时联系我们删除该资源。

一键复制全文
下载