单分支IF条件语句
if [ 条件判断式 ] then
程序;
fi //结束的时候if反过来写 fi
-----------------------------
/**
* if test -d $1 then ... else ..fi
* 变量测试语句可以用[]进行简化,如test -d $1 等价于[ -d $1 ] (注意空格不要少了)
**/
*) if语句使用fi结尾和一般语言使用大括号结尾不同
*)[条件判断式] 就是使用test命令判断,所以中括号和条件判断式之间必须有空格
*)then 后面跟符号条件之后执行的程序,可以放在[]之后,用";"分割。也可以换行写入,就不需要";"了
---------------------使用实例-----------------
"判断登录的用户是否为root"
#!/bin/bash(改行表示语言标志)
test $(env | grep "USER" | cut -d "=" -f 2)
if[ "$test"==root ]
then
echo "current user is root"
fi
-------------------------------------------------
"判断分区使用率"
#!/bin/bash
test =$(df -h | grep sda5 | awk '{print $5}' | cut -d "%" -f 1)
#把分区使用率作为变量值赋予变量rate
if [ -ge 90 ]
then
echo "文件满了"
fi
多分支语句
if [ 条件判断式1 ]
then
当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ]
then
当条件判断式2成立时,执行程序2
...省略更多条件....
else
当所有条件都不成立,最后执行此程序
fi
双分支语句
if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的另一个程序
fi
"判断输入的是不是目录"
#!/bin/bash
read -t 30 -p "please input a dir :" dir
if[ -d "$dir" ] //注意前后的空格
then
echo "输入的是目录"
else
echo "输入的不是目录"
fi
"判断apache是否启动"
#!/bin/bash
test = $(ps aux | grep httpd | grep -v grep)
#截取httpd进程,并把结果赋予变量test
if [ -n test ]
#如果test不为空
then
echo "the apache is on running!" >> /~/running.log
else
/etc/rc.d/init.d/httpd start &> dev/null
echo "the apache is restart!" >> /~/restart.log
fi