if条件语法说明:
单分支结构:
if [条件]
then
指令
fi
或
if [条件];then
fi
特殊写法:if[ -f "$file1" ];then echo 1;fi相当于[ -f "file1" ] && echo 1
下面是一个比较大小的单分支脚本
#!/bin/bash
read -p "please input two number like a b:" a b
if [ $a -eq $b ]
then
echo "$a = $b"
fi
if [ $a -lt $b ]
then
echo "$a < $b"
fi
if [ $a -gt $b ];then
echo "$a > $b"
fi
下面是效果图
[root@zhouyu shell]# sh 04if.sh
please input two number like a b:1 2
1 < 2
下面我们写一个小脚本,这个脚本是用来看看文件存在没有,不存在我们就给它创建文件,如果有就输出文件存在,如图:
#!/bin/bash
FILEPATH="/server/shell"
[ -e $FILEPATH/if3.sh ] && echo "the $FILEPATH file is exits" ||{ #判断文件存不>
存在
[ -d $FILEPATH ] && touch $FILEPATH/if3.sh ||{ #如果文件不存在就判断目录存不存在
mkdir -p $FILEPATH #如果目录不存在就创建目录
touch $FILEPATH/if3.sh #创建文件
echo "the file touch successful!!!" #输入文件创建成功!!!
}
}
下面是效果图
[root@zhouyu shell]# sh if01.sh
[root@zhouyu shell]# sh if01.sh
the /server/shell file is exits
如果你的执行出错了 你可以用下面的命令看看这个脚本的执行过程
[root@zhouyu shell]# sh -x if01.sh
+ FILEPATH=/server/shell
+ '[' -e /server/shell/if3.sh ']'
+ echo 'the /server/shell file is exits'
the /server/shell file is exits
[root@zhouyu shell]#
思考:判断系统内在大小,低于100M就进行邮件报警
#!/bin/bash
RAM=`free -m| grep Mem |awk '{print $3}'`
[[ $RAM < 100 ]] && echo "the RAM is not content"
上面是我写的,效果是:
[root@zhouyu shell]# sh if02.sh
[root@zhouyu shell]#
因为内存大于100M就不会报错
下面看看老师的写法
#!/bin/bash
free=`free -m|awk 'buffers\// {print $NF}'` #定义一个变量 打印最后一列
if [ $free -lt 100 ] #如果内存大于100M 则输出以下内容
then
echo "the current memory is $free"
echo "the current memory is $free"|mail -s "chars" 123456#qq.com
fi
下面是双分支
if [条件]
then
指令集
else
指令集
fi
特殊写法:if [ -f "$file1" ];then echo 1;else echo 0;fi相当于:[ -f "$file1" ] && echo 1 || echo 0
下面是多分支
if [条件]
then
指令
elif [条件]
then
指令
else
fi
下面是例子,写一个比较大小的
#!/bin/bash
read -p "please input two number:" a b
if [ $a -lt $b ];then
echo "$a < $b"
elif [ $a -eq $b ]
then
echo "$a = $b"
else
echo "$a > $b"
fi
本文转自 周子琪 51CTO博客,原文链接:http://blog.51cto.com/izhouyu/1891169