zoukankan      html  css  js  c++  java
  • 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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    (干货).NET开发丰富的公共类库助你事半功倍(供下载免费使用)
    .NET+模块编排+数据库操作类的封装+分层架构+实体类+Ajax.net+Athem.NET+javascript+Activex组件+用户权限等
    IOS条形码扫描
    企业架构研究总结(2)——问题的由来和基本概念(转载)
    企业架构研究总结(1)——参考资料列表(转载)
    理解.NET中的异常(一)
    [转]《Java Generics and Collections》读书笔记三:协变式覆盖与泛型重载
    [转]《Java Generics and Collections》读书笔记二:子类化与通配符
    转:C++单例模式
    [转] java package import
  • 原文地址:https://www.cnblogs.com/shenjianping/p/14310886.html
Copyright © 2011-2022 走看看