case judgment

 格式 case  变量名 in  
                      value1)   
                          command
                          ;;
                     value2)
                          command
                          ;;
                      *)
                        commond
                            ;;
                      esac

Let's see that there is such a section in the network configuration file

# vim /etc/init.d/network
#命令/etc/init.d/network start中start是它的第一个参数,取$1就是取start所在位置的值
case "$1" in
start)      //这里表示当第一个参数为start时,要做什么
  中间代码段省略
;;

stop)      //这里表示当第一个参数为stop时,要做什么   
   中间代码段省略
;;

status)        //这里表示当第一个参数为status时,要做什么
    echo $"Configured devices:"
    echo lo $interfaces

    echo $"Currently active devices:"
    echo $(/sbin/ip -o link show up | awk -F ": " '{ print $2 }')
    ;;
restart|reload|force-reload)               //这里表示当第一个参数为restart或reload或force-reload时,要做什么
    cd "$CWD"
    $0 stop
    $0 start
    rc=$?
    ;;
*)                //这里表示当第一个参数为除上面值以外的值时,要做什么
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
    exit 2
esac

In the case program, you can use | in the condition to mean or, such as

    2|3)
     command
    ;;

First, let's execute test.sh

[root@lijie-01 ~]# cat test.sh
 #!/bin/bash
#read命令是让用户输入并读取到用户输入的值
read -p "Please input a number: " n
#下面表示当n的值为空时提示需要输入一个数值,并返回一个值1来表示状态
if [ -z "$n" ]
then
    echo "Please input a number."
    exit 1
fi
[root@lijie-01 ~]# read -p "Please input a number: " n   
Please input a number: sf         //这里输入的是sf,则n的值为sf
[root@lijie-01 ~]# echo $n
sf
[root@lijie-01 ~]# sh test.sh
Please input a number:       //这里没有任何输入,系统提示Please input a number.并返回值1
Please input a number.
[root@lijie-01 ~]# echo $?
1

Let's write a small shell case

 #!/bin/bash
read -p "Please input a number: " n
if [ -z "$n" ]
then
    echo "Please input a number."
    exit 1
fi
#这里表示判断用户输入的n值是否是纯数字,就是将n中的全部数字找到然后替换为空,如果为纯数字,则n1最终结果为空
n1=`echo $n|sed 's/[0-9]//g'`
if [ -n "$n1" ]         //判断n1是否不为空,如果不为空,则说明输入的n值不是纯数字
then
 echo "Please input a number."
 exit 1
fi

if [ $n -lt 60 ] && [ $n -ge 0 ]
then
    tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
    tag=2
elif [ $n -ge 80 ]  && [ $n -lt 90 ]
then
    tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
    tag=4
else 
    tag=0
fi
case $tag in
    1)
	echo "不及格"
        ;;
    2)
        echo "及格"
        ;;
    3)
        echo "良好"
        ;;
    4)
        echo "优秀"
        ;;
    *)
        echo "The number range is 0-100."
        ;; 
esac


Then execute the script of this case.sh, enter the different grades of the students, and view the results

[root@lijie-01 ~]# sh -x case.sh 
+ read -p 'Please input a number: ' n
Please input a number: 101       //当输入的数字为101时的执行过程
+ '[' -z 101 ']'
++ sed 's/[0-9]//g'
++ echo 101
+ n1=
+ '[' -n '' ']'
+ '[' 101 -lt 60 ']'
+ '[' 101 -ge 60 ']'
+ '[' 101 -lt 80 ']'
+ '[' 101 -ge 80 ']'
+ '[' 101 -lt 90 ']'
+ '[' 101 -ge 90 ']'
+ '[' 101 -le 100 ']'
+ tag=0
+ case $tag in
+ echo 'The number range is 0-100.'
The number range is 0-100.
[root@lijie-01 ~]# sh -x case.sh
+ read -p 'Please input a number: ' n
Please input a number: 77
+ '[' -z 77 ']'
++ sed 's/[0-9]//g'
++ echo 77
+ n1=
+ '[' -n '' ']'
+ '[' 77 -lt 60 ']'
+ '[' 77 -ge 60 ']'
+ '[' 77 -lt 80 ']'
+ tag=2
+ case $tag in
+ echo $'\345\217\212\346\240\274'
及格
[root@lijie-01 ~]# sh -x case.sh
+ read -p 'Please input a number: ' n
Please input a number: 90
+ '[' -z 90 ']'
++ echo 90
++ sed 's/[0-9]//g'
+ n1=
+ '[' -n '' ']'
+ '[' 90 -lt 60 ']'
+ '[' 90 -ge 60 ']'
+ '[' 90 -lt 80 ']'
+ '[' 90 -ge 80 ']'
+ '[' 90 -lt 90 ']'
+ '[' 90 -ge 90 ']'
+ '[' 90 -le 100 ']'
+ tag=4
+ case $tag in
+ echo $'\344\274\230\347\247\200'
优秀
[root@lijie-01 ~]# sh -x case.sh
+ read -p 'Please input a number: ' n
Please input a number: sfse
+ '[' -z sfse ']'
++ echo sfse
++ sed 's/[0-9]//g'
+ n1=sfse
+ '[' -n sfse ']'
+ echo 'Please input a number.'
Please input a number.
+ exit 1
[root@lijie-01 ~]# 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325811956&siteId=291194637