• Shell之分支结构


    一、if条件语句

    (一)单分支结构

    1、语法

    # 写法一
    if [条件]
        then
            指令
    fi
    
    # 写法二 分号相当于换行
    if [条件];then
        指令
    fi         

    2、实例

    • 比较大小
    #方法一
    #!/bin/sh 
    if [ 2 -lt 10 ]
        then
            echo "2 < 10"
    fi
    
    #方法二 []中不能使用>、<
    #!/bin/sh 
    if [ 2 -lt 10 ];then
            echo "2 < 10"
    fi
    •  创建文件
    #!/bin/sh
    path=/project
    file=if_file.sh
    if [ ! -d $path ]
       then
         mkdir -p $path
         echo "$path is created"
    fi
    
    if [ ! -f $path/$file ]
       then
         touch $path/$file
         echo "$path/$file is created"
    fi

    (二)多分支结构

    1、双分支结构

    if [条件]
        then
            指令
    else
            指令    
    fi

    2、多分支结构

    if [条件]
        then
            指令
    elif
         then  
            指令    
    elif
         then  
            指令    
    ...
    else
            指令    
    fi

    3、比较大小

    #!/bin/sh
    a=$1
    b=$2
    
    if [ $a -lt $b ]
       then
         echo "$a less than $b"
    elif [ $a -gt $b ]
       then
         echo "$a more than $b"
    else
       echo "$a equal $b"  
    fi

    通过脚本传参的方式比较大小。

    二、MySQL启动脚本

    该脚本主要用于监视MySQL服务是否正常启动,如果未正常启动就进行正常启动。

    (一)监听MySQL服务的方式

    1、法一(监听端口)

    [root@localhost ~]# netstat -lntup|grep 3306
    tcp6       0      0 :::3306                 :::*                    LISTEN      2023/mysqld         

    2、法二(监听进程)

    [root@localhost ~]# ps -ef | grep mysql
    root       1536      1  0 22:28 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/localhost.localdomain.pid
    mysql      2023   1536  0 22:28 ?        00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
    root       3924   3782  0 22:36 pts/0    00:00:00 grep --color=auto mysql

    3、法三(判断返回状态)

    通过客户端连接服务器,根据返回的状态判断MySQL服务器的状态。

    # 该数据库未设置密码
    [root@localhost ~]# mysql -e "select version();" &>/dev/null 
    [root@localhost ~]# echo $?
    0

    (二)脚本

    1、监听端口 

    #!/bin/sh
    portNum=`netstat -tunlp | grep 3306 | wc -l`
    if [ $portNum -ne 1 ]
       then 
         /etc/init.d/mysqld start
    else
         echo "MySQL is running..." 
    fi

    2、监听进程

    #!/bin/sh
    process=`ps -ef | grep mysql | grep -v grep | wc -l`
    if [ $process -ne 2 ]
       then
         /etc/init.d/mysqld start
    else
         echo "MySQL is running..." 
    fi

    此种方法中shell脚本名中不要带mysql关键字,执行中可以通过-x参数查看执行过程。

    3、判断返回状态

    #!/bin/sh
    mysql -e "select version();" &>/dev/null
    if [ $? -ne 0 ]
       then
         /etc/init.d/mysqld start
    else
         echo "MySQL is running..." 
    fi
    作者:iveBoy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    团队冲刺二(6)
    团队冲刺二(5)
    JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结
    解决ADB server didn't ACK问题,连上手机问题
    ADB server didn't ACK
    android错误
    Andy
    在Eclipse下搭建Android开发环境教程
    VM VirtualBox 安装 Android 4.3虚拟机完整教程
    电脑安装Android4.0虚拟机的做法
  • 原文地址:https://www.cnblogs.com/shenjianping/p/14310886.html
Copyright © 2020-2023  润新知