在Linux系统中,我们常常会用到java version等类似的命令,这些都是基于case的语法来做的,下面我们简单的走几个案例来说明。说实话这个case in语句用到的地方挺多的,在这这个case语句中,需要注意一下几点,1、注意
exit 0
和exit 1
表示的意义;2、大小写匹配的两种解决方案
语法结构
语法结构,我就用下面的图说明一下了,其中 exit 1 和 exit0 不是语法结构里面的
案例1
case 一个条件
在这个case的案例中,我添加了exit 0 和exit 1,这个用来表示程序是否是正常的退出,退出的值,可以在执行完命令后,通过echo $? 来获取到
#!/bin/bash
#判断,第一个输入的参数是啥
case "$1" in
#当是start的轻卡un个
start)
echo "start"
;;
#当时stop命令的情况
stop)
echo "stop"
;;
#默认输入命令,不做操作的情况
*)
echo "doubi input" $1
#非正常运行导致退出程序;
exit 1
;;
esac
#正常退出
exit 0
执行
执行命令,发现,在执行后,发现如果走默认的*)这个里面,退出获取的结果code是1 ,这就可以让后面执行的脚本来判断,你是否正常执行了前面的一个脚本。
案例2
case 多个条件
#!/bin/bash
case "$1" in
start|begin)
echo "start program"
;;
#stop xx
stop|end)
echo "stop program"
;;
#default
*)
echo "./demo.sh start|begin "
echo "doubi input" $1
#非正常运行导致退出程序;
exit 1
;;
esac
#正常退出
exit 0
case里面判断多个条件
执行结果
可以发现end|stop 是一个命令,start和begin是一个命令
大小写字符判断
方法1
1、通过加入export LC_ALL=C
来解决大小写的问题
2、通过[A-Z]改为[[:upper:]],[a-z]改为[[:lower:]]
export LC_ALL=C
case "$1" in
[a-z])
echo "小写"
;;
#stop xx
[A-Z])
echo "大写 stop program"
;;
[0-9])
echo "数字"
;;
#default
*)
echo "./demo.sh start|begin "
echo "doubi input" $1
#非正常运行导致退出程序;
exit 1
;;
esac
#正常退出
exit 0
方法2
可以将大写和小写用
#!/bin/bash
#demo.sh
case "$1" in
[[:lower:]])
echo "小写"
;;
#stop xx
[[:upper:]])
echo "大写 stop program"
;;
[0-9])
echo "数字"
;;
#default
*)
echo "./demo.sh start|begin "
echo "doubi input" $1
#非正常运行导致退出程序;
exit 1
;;
esac
#正常退出
exit 0