Linux shell脚本---case语句

一,case语句解释

1,case语句的作用

case语句用于条件判断,判断一个变量的不同取值

2,case语句的语法

case 变量值 in
匹配模式1)
命令序列1
;;
 匹配模式2)
命令序列2
;;
........
........
*)           #表示不是以上模式则执行
命令序列
;;
esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3, case语句的基本含义

case行必须以“in”结尾
匹配模式必须以“)”结尾
“;;” 双分号表示命令序列结束
“*)”表示默认模式,“ * ”于通配符含义相同

4, case语句的执行流程

首先使用“变量值”与匹配模式1进行比较,如果值相同则执行该模式命令序列,直至“;;”号后跳转esac,结束分支。如果“变量值”与匹配模式1不同,则与匹配模式2进行匹配取值,如果值相同则执行该模式命令序列,直至“;;”号后跳转esac,结束分支。如果“变量值”与匹配模式2不同,则继续匹配下个匹配模式,以此类推。如果找到不到匹配相同的值,则执行“*)”模式后的命令序列,直至esac结束分支。

5,read命令解释

read命令从键盘读取变量的值,该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。
read 命令详解:https://man.linuxde.net/read

二,sace语句应用实例

1,为了进一步的了解使用sace使用,下面搭搭建两个简单的脚本练习。

脚本1:

脚本内容:

[root@localhost 1]# vim gF.sh 
  • 1
#!/bin/bash

read -p "你今天吃了什么饭?
:" gF

case $gF in
"馒头")
   echo "今天吃了$gF"
   exit 0           #exit0 为退出的返回状态码
   ;;
"米饭")
   echo "今天吃了$gF"
   exit 11
   ;;
"包子")
   echo "今天吃了$gF"
   exit 22
   ;;
"面条")
   echo "今天吃了$gF"
   exit 33
   ;;
*)
   echo "识别不到此食物"
   exit 87
   ;;
esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
[root@localhost 1]# chmod +x gF.sh
[root@localhost 1]# ./gF.sh 
你今天吃了什么?
:馒头
今天吃了馒头
[root@localhost 1]# ./gF.sh 
你今天吃了什么?
:111
识别不到此食物
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

脚本解释:
read命令输出的值为$gF变量,随后case $gF in 代码行检测read输出值是否为“馒头”,如果为馒头则执行命令行,输出今天吃了馒头,如果不为馒头则继续检测匹配,匹配完所有匹配模式分支没有相同的,则执行默认“*)”输出识别不到次食物。

脚本2:

脚本内容:

[root@localhost 1]# vim Sz.sh
  • 1
#!/bin/bash

read -p "输入一个数字或字母:" Sz

case $Sz in
[a-z])
    echo "你输入的是小写字母"
    ;;
[A-Z])
    echo "你输入的大写字母"
    ;;
[0-99999])
    echo "你输入的是数字"
    ;;
*)
    echo "你输入的是其他字符"
    ;;
esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
[root@localhost 1]# chmod +x Sz.sh 
[root@localhost 1]# ./Sz.sh 
输入一个数字或字母:9
你输入的是数字
[root@localhost 1]# ./Sz.sh 
输入一个数字或字母:z
你输入的是小写字母
[root@localhost 1]# ./Sz.sh 
输入一个数字或字母:Z
你输入的大写字母
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

脚本解释
read命令输出的值为$Sz变量,随后case $Sz in 代码行检测read输出值是否为“a-z”,如果为小写字母“a-z”则执行命令行,输出你输入的是小写字母,如果不为“a-z”则继续检测匹配,匹配完所有匹配模式分支没有相同的,则执行默认“*)”输出你输入的是其他字符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值