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:///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