Shell——if条件语句解析及运用(shell脚本实现一键成功安装配置mysql,http,Php apache等服务)

1,shell的if语句
if具体的语法:

If 条件判断语句

if ( 表达式);then

语句1

else

语句2

fi
例子1:测试数字大小

#!/bin/bash
#filename:four-if.sh
#by author wg 2018-02-01

num1=100
num2=200

if (($num1 > $num2)) ;then
        echo "this num is $num1"
else
        echo "this num is $num2"
fi

运行结果

例子2:测试目录是否存在,不存在则新建(注意,中括号之间必须
要空格)
-f 判断文件是否存在 eg: if [ -f filename ]

-d 判断目录是否存在 eg: if [ -d dir ]

-eq 等于应用于:整型比较

-ne 不等于应用于:整型比较

-lt 小于应用于:整型比较

-gt 大于应用于:整型比较

-le 小于或等于应用于:整型比较

-ge 大于或等于应用于:整型比较

-a 双方都成立( and) 逻辑表达式–a 逻辑表达式

-o 单方成立( or ) 逻辑表达式–o 逻辑表达式

-z 空字符串

创建five_if_dir.sh文件内容如下

#!/bin/bash
#jude dir exist

DIR=/tmp/hello

if [ ! -d $DIR ];then

        mkdir -p $DIR
        echo -e "\033[32m create $DIR success!\033[0m"
else
        echo -e "\033[32m $DIR is already exist!\033[0m"

fi

运行结果

例子3:多个条件测试判断

#!/bin/bash

score=$1
if [ -z $score ] ;then
        echo "Usage:{$0 60|80}"
        exit
fi

if [[ $score -gt 85 ]];then
        echo "A is very good!"
elif [[ $score -gt 75  && $score -lt 85 ]];then
        echo "B is good!"
elif [[ $score -gt 60 ]];then
        echo "C is pass"
elif [[ $score -gt 50 && $score -lt 60 ]];then 
        echo "D is fail"
else
        echo "D is bad"
fi

测试结果如下:

if语句中两个中括号[[表示判断整型,一个判断目录或字符

2,使用if条件语句编写MySQL备份脚本
输出当前系统时间:echo date +%Y%m%d
1)自动备份Mysql数据库脚本

#!/bin/sh

#auto backup mysql

#wugk 2012-12-12

#Define PATH 定义变量

BAKDIR=/data/backup/mysql/`date 
+%Y-%m-%d`

MYSQLDB=webapp

MYSQLPW=backup

MYSQLUSR=backup

#must use root user run scripts 必须使用root 
用户运行, $UID

为系统变量

if

[ $UID -ne 0 ];then

echo This script must use the root user ! ! !

sleep 2

exit 0

fi

#Define DIR and mkdir DIR 判断目录是否存在,不存在则新建

if [ ! -d $BAKDIR ];then

mkdir -p $BAKDIR

else

echo This is $BAKDIR exists....

fi

#Use mysqldump backup mysql 使用mysqldump备份数据库

/usr/bin/mysqldump -u$MYSQLUSR 
-p$MYSQLPW -d

$MYSQLDB >$BAKDIR/webapp_db.sql

echo "The mysql backup successfully "


3,IF 条件综合Shell 实战脚本编写

通过if 语句和之前变量的学习,今天我们将把我们所学的综合在一

起来讲解一个实战运维脚本,一键安装LAMP环境的脚本:

一键源码安装LAMP脚本, 先分解脚本的各个功能:

打印菜单:

1)安装apache WEB服务器

2)安装Mysql DB 服务器

3)安装PHP 服务器

4)整合LAMP架构并启动服务

1、Apache服务器安装部署。

下载httpd-2.2.27.tar.gz 版本,下载URL,解压,进入安装目录,

configure;make ;make install

2、Mysql 服务器的安装。

下载mysql-5.5.20.tar.bz2 版本,下载URL,解压,进入安装目录,

configure;make ;make install

3、PHP服务器安装。

下载php-5.3.8.tar.bz2 版本,下载URL,解压,进入安装目录,

configure;make ;make install

4、LAMP架构的整合和服务启动。

脚本文件实现:一键安装MySql,Http,PHP服务等
建立LAMP.sh脚本文件,内容如下:

#!/bin/bash
#auto install LAMP
#by wg 2018-11

#Httpd define path variable
H_FILES=httpd-2.4.38.tar.bz2
H_FILES_DIR=httpd-2.4.38
H_URL=http://mirrors.cnnic.cn/apache/httpd/
H_PREFIX=/usr/local/apache2/

#MySQL define path variable
M_FILES=mysql-5.5.20.tar.gz
M_FILES_DIR=mysql-5.5.20
M_URL=https://downloads.mysql.com/archives/community/
M_PREFIX=/usr/local/mysql/

#PHP define path variable
P_FILES=php-5.3.28.tar.bz2
P_FILES_DIR=php-5.3.28
P_URL=http://mirrors.sohu.com/php/
P_PREFIX=/usr/local/php5/

echo -e '\033[32m-----------------------------\033[0m'
echo
if [ -z "$1" ];then
echo -e "\033[36mPlease Select Install Menu follow:\033[0m"
echo -e "\033[32m1) 编译安装Apache服务器\033[1m"
echo "2) 编译安装MySQL服务器"
echo "3) 编译安装PHP服务器"
echo "4) 配置index.php 并启动LAMP服务"
echo -e "\033[31mUsage: { /bin/sh $0 1|2|3|4|help}\033[0m"
exit
fi

if [[ "$1" -eq "help" ]];then
echo -e "\033[36mPlease Select Install Menu
follow:\033[0m"
echo -e "\033[32m1) 编译安装Apache服务器\033[1m"
echo "2) 编译安装MySQL服务器"
echo "3) 编译安装PHP服务器"
echo "4) 配置index.php 并启动LAMP服务"
echo -e "\033[31mUsage: { /bin/sh $0
1|2|3|4|help}\033[0m"
exit
fi

######################################
#Install httpd web server
if [[ "$1" -eq "1" ]];then
        wget -c $H_URL/$H_FILES && tar -jxvf $H_FILES && cd $H_FILES_DIR ;./configure --prefix=$H_PREFIX
        if [ $? -eq 0 ];then
                make && make install
                echo -e "\033[32mThe $H_FILES_DIR Server Install Success !\033[0m"
        else
                echo -e "\033[32mThe $H_FILES_DIR Make or Make install ERROR,Please Check......\033[0m"
                exit 0
        fi
fi

#Install Mysql DB server
if [[ "$1" -eq "2" ]];then
        wget -c $M_URL/$M_FILES && tar -xzvf $M_FILES && cd $M_FILES_DIR && apt install cmake -y ;cmake . -DCMAKE_INSTALL_PREFIX=$M_PREFIX \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
make && make install

/bin/cp support-files/my-small.cnf /etc/my.conf
/bin/cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
        
        if [ $? -eq 0 ];then
                make && make install
                echo -e "\033[32mThe $M_FILES_DIR Server Install Success !\033[0m"
        else
                echo -e "\033[32mThe $M_FILES_DIR Make or Make install ERROR,Please Check......\033[0m"
                exit 0
        fi
fi

#Install PHP server
if [[ "$1" -eq "3" ]];then
        wget -c $P_URL/$P_FILES && tar -jxvf $P_FILES && cd $P_FILES_DIR &&./configure --prefix=$P_PREFIX --with-config-file-path=$P_PREFIX/etc --with-mysql=$M_PREFIX --with-apxs2=$H_PREFIX/bin/apxs
        if [ $? -eq 0 ];then
                make ZEND_EXTRA_LIBS='-liconv' && make
                install
                echo -e "\033[32mThe $P_FILES_DIR Server Install Success !\033[0m"
        else
                echo -e "\033[32mThe $P_FILES_DIR Make or Make install ERROR,Please Check......\033[0m"
                exit 0
        fi
fi

####################################
#configure PHP server
if [[ "$1" -eq "4" ]];then
        sed -i '/DirectoryIndex/s/index.html/index.php index.html/g' $H_PREFIX/conf/httpd.conf $H_PREFIX/bin/apachectl restart
        echo "AddType application/x-httpd-php .php" >>$H_PREFIX/conf/httpd.conf
        IP=`ifconfig eth1|grep "Bcast"|awk '{print $2}'|cut -d:-f2`
        echo "You can access http://$IP/"
        cat >$H_PREFIX/htdocs/index.php <<EOF
<?php
phpinfo();
?>
EOF
fi

运行./LAMP.sh + [序号] 进行选择安装,如下图
./LAMP.sh 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值