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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。