case语句使用举例

shell中的case语句:

可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码。

使用格式:
case 匹配母板 in
模板1 [ | 模板2 ] … ) 语句组 ;;
模板3 [ | 模板4 ] … ) 语句组 ;;
esac
case语句的匹配是从上往下地匹配顺序。因此,case语句编写的原则是从上往下,模板从特殊到普通。在C语言里,case语句中有default模板,而在shell程序设计中,可能将模板写成*,就可以完成相同的功能。

注意: 1、*) 相当于其他语言中的default。
        2、除了*)模式,各个分支中;;是必须的,;;相当于其他语言中的break
        3、 | 分割多个模式,相当于or

下面是一些例子:

#!/bin/bash
##filename:what-lang-do-you-like.sh
echo "What is your preferred scripting language?"
read -p "1)bash 2)perl 3)python 4)ruby:"   lang
case $lang in
        1)      echo "You selected bash"   ;;
        2)      echo "You selected perl"   ;;
        3)      echo "You selected python" ;;
        4)      echo "You selected ruby"   ;;
        *)      echo "I do not know!"      ;;
esac



#!/bin/bash
##filename:which-pi-do-you-like.sh
echo "Which is your preferred PI?"
read -p "Aruino,pcDuino,RaspberryPi,Cubieboard,OrangePi,BananaPi:  "  pi
case $pi in
        [Aa]*|[Pp]*)            echo "You selected Arduino/pcDuino."  ;;
        [Bb]*|[Cc]*|[Oo]*)      echo "You selected Cubieboard/Banana Pi/Orange Pi."  ;;
        [Rr]*)                  echo "You selected Raspberry Pi."  ;;
        *)                      echo "I don't know which PI you like."  ;;
esac



#!/bin/bash
FRUIT=$1         #注意没有空格
if [ -z "$1" ]   #中括号跟 -z 要有空格
then
echo "没有在第一个参数输入水果"
else
case "$FRUIT" in
apple|APPLE) echo "THE FRUIT is apple";;
banana|BANANA) echo "THE FRULT is banana";;
#可以使用*)来表示默认选项,注意最后要用两个分号来结尾
*) echo "输入的是不是我要的水果啊?";;
esac
fi



不知道为什么ubuntu上面有些demo运行效果和CentOS上运行总是有些差别,下次网上仔细找找有没什么相关的说明。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值