一,case语句解释
1,case语句的作用
case语句用于条件判断,判断一个变量的不同取值
2,case语句的语法
case 变量值 in
匹配模式1)
命令序列1
;;
匹配模式2)
命令序列2
;;
........
........
*) #表示不是以上模式则执行
命令序列
;;
esac
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
#!/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
[root@localhost 1]# chmod +x gF.sh
[root@localhost 1]# ./gF.sh
你今天吃了什么?
:馒头
今天吃了馒头
[root@localhost 1]# ./gF.sh
你今天吃了什么?
:111
识别不到此食物
脚本解释:
read命令输出的值为$gF变量,随后case $gF in 代码行检测read输出值是否为“馒头”,如果为馒头则执行命令行,输出今天吃了馒头,如果不为馒头则继续检测匹配,匹配完所有匹配模式分支没有相同的,则执行默认“*)”输出识别不到次食物。
脚本2:
脚本内容:
[root@localhost 1]# vim Sz.sh
#!/bin/bash
read -p "输入一个数字或字母:" Sz
case $Sz in
[a-z])
echo "你输入的是小写字母"
;;
[A-Z])
echo "你输入的大写字母"
;;
[0-99999])
echo "你输入的是数字"
;;
*)
echo "你输入的是其他字符"
;;
esac
[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
你输入的大写字母
脚本解释
read命令输出的值为$Sz变量,随后case $Sz in 代码行检测read输出值是否为“a-z”,如果为小写字母“a-z”则执行命令行,输出你输入的是小写字母,如果不为“a-z”则继续检测匹配,匹配完所有匹配模式分支没有相同的,则执行默认“*)”输出你输入的是其他字符。