shell流程控制-if判断

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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值