在Linux系统中,我们常常会用到java version等类似的命令,这些都是基于case的语法来做的,下面我们简单的走几个案例来说明。说实话这个case in语句用到的地方挺多的,在这这个case语句中,需要注意一下几点,1、注意exit 0exit 1表示的意义;2、大小写匹配的两种解决方案

语法结构

语法结构,我就用下面的图说明一下了,其中 exit 1 和 exit0 不是语法结构里面的

Linux Shell编程case语句-yellowcong_shell

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

Linux Shell编程case语句-yellowcong_正常运行_02

执行

执行命令,发现,在执行后,发现如果走默认的*)这个里面,退出获取的结果code是1 ,这就可以让后面执行的脚本来判断,你是否正常执行了前面的一个脚本。

Linux Shell编程case语句-yellowcong_shell_03

案例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里面判断多个条件
Linux Shell编程case语句-yellowcong_其他_04

执行结果

可以发现end|stop 是一个命令,start和begin是一个命令

Linux Shell编程case语句-yellowcong_退出程序_05

大小写字符判断

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

Linux Shell编程case语句-yellowcong_正常运行_06

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

Linux Shell编程case语句-yellowcong_其他_07

执行结果

Linux Shell编程case语句-yellowcong_shell_08