shell IF分支判断语句

单分支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
原文地址:https://www.cnblogs.com/ssgao/p/8871600.html