shell之case

  在shell变成中,case语句是if语句的一种扩展,将if中的判断语句,展开,同一个变量,对应多个可能的值时,执行不同的操作。具体句型如下:

case "变量" in
    values1)
        指令,执行的操作
        ;;
    values2)
        指令,执行的操作
        ;;
    *)
        指令,执行的操作
esac

  最常用的case语句,应用在各个程序的启动脚本中,通常是start|stop|restart等等。下面就自己写一个关于mysql服务脚本的启动,实际上也是对support-files/mysql.server的一种理解而已。具体代码如下:

BaseDir=/app/mysql
BinDir=$BaseDir/support-files/mysql.server

if [ $# -ne 1  ]
        then
        echo "Usage:$0 {start|stop|restart}"
fi

start() {
        if [  "`ps -ef|grep mysqld|grep -v grep|wc -l`" -ne 0  ]
        then
        echo "The mysql server is running!"
        exit 1
        else
        echo "Starting Mysql server..."
        $BinDir start >/dev/null 2>/dev/null
        [ $? -eq 0 ] && action "starting mysql server " /bin/true || action "starting mysql server " /bin/false
        exit 1
        fi
}

stop() {
        if  [ "`ps -ef|grep mysqld|grep -v grep|wc -l`" -eq 0  ]
        then
        echo "The mysql server is not running"
        exit 1
        else
        echo "Stopping mysql server"
        $BinDir stop >/dev/null 2>/dev/null
        [ $? -eq 0 ] && action "stopping mysql server " /bin/true || action "stopping mysql server " /bin/false
        exit 1
        fi
}

restart() {

        if  [ "`ps -ef|grep mysqld|grep -v grep|wc -l`" -eq 0  ]
        then 
        sh $0 start
        exit 1
        else
        sh $0 stop
        sh $0 start
        exit 1
        fi
}
case $1 in 
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart)
                restart
        ;;
        *)
                exit 1
esac

  首先是定义这个脚本的用法,需要的参数,然后就是定义了三个函数,实际上这三个函数在functions中也有定义过,由于是加载了functions这个脚本,所以在定义函数的时候能看到是特殊字体。最后才是一个case语句。可以测试一下操作脚本。

[root@CentOS_client server_scripts]# sh mysql_script.sh start  
Starting Mysql server...
starting mysql server                                      [  OK  ]
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6115/mysqld         
[root@CentOS_client server_scripts]# sh mysql_script.sh start
The mysql server is running!
[root@CentOS_client server_scripts]# sh mysql_script.sh stop
Stopping mysql server...
stopping mysql server                                      [  OK  ]
[root@CentOS_client server_scripts]# sh mysql_script.sh stop
The mysql server is not running
[root@CentOS_client server_scripts]# sh mysql_script.sh restart
Starting Mysql server...
starting mysql server                                      [  OK  ]
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6482/mysqld         
[root@CentOS_client server_scripts]# sh mysql_script.sh restart
Stopping mysql server...
stopping mysql server                                      [  OK  ]
Starting Mysql server...
starting mysql server                                      [  OK  ]
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6829/mysqld         
[root@CentOS_client server_scripts]# sh mysql_script.sh start
The mysql server is running!
[root@CentOS_client server_scripts]# 

猜你喜欢

转载自www.cnblogs.com/bobo137950263/p/9249451.html