if语句
可以使用逻辑与&&和逻辑或||进行if判断
[ -e /tmp/xx.log ] && echo "文件存在" || echo "文件不存在"
单分支if条件判断
if [ 条件判断 ] ; then
程序
fi;
或者
if [ 条件判断 ]
then
程序
if
单分支条件语句需要注意几点:
1、if语句使用fi结尾,和一般语言使用大括 号结尾不同
2、[ 条件判断式 ]就是使用test命令判断,所 以中括号和条件判断式之间必须有空格
3、then后面跟符合条件之后执行的程序,可 以放在[]之后,用“;”分割。也可以换 行写入,就不需要“;”了
#!/bin/bash
#统计根分区使用率
rate=$(df -h | grep "/dev/sda3" | awk '{print $5}' | cut -d "%" -f 1)
if [ $rate -gt 80 ] ;then
echo "Warning ! /dev/sda3 is full"
fi
双分支if条件判断
if [ 条件判断 ]
then
条件成立,执行程序
else
条件不成立,执行另外程序
if
备份MySQL数据库
#!/bin/bash
#同步系统时间
ntpdate asia.pool.ntp.org &>/dev/null
#把当前系统时间按照“年月日”格式赋予变量date
date=$(date +%y%m%d)
#统计mysql数据库的大小,并把大小赋予size变量
size=$(du -sh /var/lib/mysql)
if [-d /tmp/dbbak]
then
echo "Date:$date!" > /tmp/dbbak/dbinfo.txt
echo "Data Size:$size" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcvf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt & > /dev/null
rm -rf /tmp/dbbak/dbinfo.txt
else
mkdir /tmp/dbbak
echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt & > /dev/null
rm -rf /tmp/dbbak/dbinfo.txt
fi
判断Apache是否启动
#!/bin/bash
port=$(nmap -sT 192.168.1.141 | grep "tcp" | grep "http" | awk '{print $2}')
if [ $port=="open" ]
then
echo “$(date) httpd is ok!” >> /tmp/autostart-acc.log
else
/etc/rc.d/init.d/httpd start &>/dev/null
echo "$(date) restart httpd !!" >> /tmp/autostart-err.log
fi
nmap安装包地址
链接:https://pan.baidu.com/s/1gcS-JagniPYFsDeJPsLNaQ?pwd=35da
多分支if条件判断
if [ 条件判断1 ]
then
条件成立,执行程序
elif [ 条件判断2 ]
then
条件成立,执行程序
else
所有条件不成立,执行程序
fi
#!/bin/bash
#键盘接收用户输出的文件名
read -p "Please input a filename:" filename
if [ -z $filename ]
then
echo "Error,please input a filename"
exit 1
elif [ ! -e $filename ]
then
echo "Your input is not a file!"
exit 2
elif [ -f $filename ]
then
echo "$file is a regulare file!"
elif [ -d $filename ]
then
echo "$file is a directory!"
else
echo "$file is an other file!"
fi