shell if 判断总结与实例
if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句fi[-d DIR ] 如果DIR存在并且是一个目录则为真 [ -f FILE ] 如果FILE存在且是一个普通文件则为真 [ -e dir||file] 如果指定的文件或者目录存在返回真[ -z STRING ] 如果STRING的长度为零则为真 [ -n STRING ] 如果STRING的长度非零则为真 [ STRING1 = STRING2 ] 如果两个字符串相同则为真 [ STRING1 != STRING2 ] 如果字符串不相同则为真 [ ARG1 OP ARG2 ] ARG1和ARG2应该是整数或者取值为整数的变量,OP是-eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大于)-ge(大于等于)之中的一个 [ -r FILE ] 文件存在并且可读权限[ -w FILE ] 文件存在并且可写权限[ -x FILE ] 文件存在并且能执行权限 注意:变量取值STRINGx 最好放在""内; []和STRING中间有空格; 判断大小比如 -eq 千万注意一定要带"-",使用看下面的例子1、if语句的基本结构实现:#!/bin/bashnum=$(ps -ef | grep http | grep -v grep | wc -l)if [ "$num" -lt "11" ];then echo "haha" elif [ "$num" -gt "11" ] && [ "$num" -lt "15" ];then echo "no !"else echo "great than 15"fi说明:[ "$num" -gt "11" ] && [ "$num" -lt "15" ] 等价于 [ "$num" -gt "11" -a "$num" -lt "15" ]2、if判断结合read#!/bin/bash#echo -n "please input a num:"#read num#echo "input num is $num"read -p "please input a num:" numecho -e "input num is $num judging now"if [ "$num" -lt "60" ];then echo "you are lost,please work harder!" elif [ "$num" -ge "60" ] && [ "$num" -lt "85" ];then echo "good job,baby!" elif [ "$num" -le "100" ] && [ "$num" -ge "85" ];then echo "pretty good,cheer" else echo "input num is wrong"fi说明:通过echo 输出(#注销掉的)和read -p结果是一样的,只需要注意echo的参数设置。 echo -e参数使输出中的反斜线(\)的说明起作用 echo -n参数使引号后的内容接着输出(不换行)3、文件属性判断 #!/bin/bashif [ ! -d /tmp/k ];then \\注意空格,感叹号的前后都有一个空格,表示"非"的意思 echo "k is not a document" else echo "you are right"fi