一、语法
if [ condition ]
then
statements
[elif condition
then statements. ..]
[else
statements ]
fi
二、说明
(1)[ condition ]
(
注意
condition
前后要有空格
)
非空返回true,可使用$?验证(0为true,>1为false) 如:[ hadoop ] 返回true
空返回false 如:[ ] 返回false
(2)[ condition ] && echo OK ||echo notok 可以多条件,条件满足,执行后面的语句
[root@localhost shell]# vi testif.sh
#/bin/bash
if [ $USER=root ]
then
echo "hello $USER"
elif [ $USER=hadoop ]
then
echo " welcome $USER"
else
echo "hi $USER"
fi
~
"testif.sh" 11L, 147C written
[root@localhost shell]# chmod +x testif.sh
[root@localhost shell]# ./testif.sh
hello root
[root@localhost shell]#
四、 常用的判断条件
= | 字符串比较 |
-lt | 小于 |
-le | 小于等于 |
-eq | 等于 |
-gt | 大于 |
-ge | 大于等于 |
-ne | 不等于 |
-r | 有读的权限 |
-w | 有写的权限 |
-x | 有执行的权限 |
-f | 文件存在并且是一个常规的文件 |
-s | 文件存在且不为空 |
-d | 文件存在并是一个目录 |
-b | 文件存在并且是一个块设备 |
-L | 文件存在并且是一个软连接 |
示例:
[root@localhost shell]# vi testif2.sh
#/bin/bash
if [ -x testif.sh ]
then
echo " have x"
else
echo " doesn't have x"
fi
if [ 3 -lt 4 ]
then
echo "less"
else
echo "more"
fi
if [ $user=root ]
then
echo "root"
else
echo "other"
fi
~
"testif2.sh" [New] 21L, 219C written
[root@localhost shell]# chmod +x testif2.sh
[root@localhost shell]# ./testif2.sh
have x
less
root
[root@localhost shell]#