条件表达式:
1、文件表达式
#如果文件存在
if [ -f file ]
#如果目录存在
if [ -d dir ]
#如果文件存在且非空
if [ -s file ]
#如果文件存在且可读
if [ -r file ]
#如果文件存在且可写
if [ -w file ]
#如果文件存在且可执行
if [ -x file ]
2、整数表达式
#如果a等于b
if [ a -eq b ]
#如果a不等于b
if [ a -ne b ]
#如果a大于b
if [ a -gt b ]
#如果a大于等于b
if [ a -ge b ]
#如果a小于b
if [ a -lt b ]
#如果a小于等于b
if [ a -le b ]
3、字符串变量
a=''
b=''
#如果a等于b
if [ ${a} = ${b} ]
#如果a不等于b
if [ ${a} != ${b} ]
#如果a非空
if [ -n ${a} ]
#如果a为空,长度为0
if [ -z ${a} ]
=放在if中就是字符串的等于,在别的地方就是赋值。等号作为赋值和等于的时候,写法上是有很大区别的:赋值等号两边不能有空格,等于等号两边必须有空格。
判断字符串非空上面的方式测试不正确,但是看很多资料上都是这么说的(不推荐)。下面这种方式是经过测试的
if [ ${a} ] 如果a为空走else。
4、逻辑表达式
4.1、非 if [ ! 表达式 ]
4.2、与
if [ 表达式 -a 表达式 ] 或者 if [ 表达式 ] && [ 表达式 ]
echo 'write path:'
read path
if [ -d ${path} -a -n ${path} ]
then
echo '---'
else
echo '+++'
fi
判断输入是目录同时不为空串
执行结果: ---
4.3、或
if [ 表达式 -o 表达式 ] 或者 if [ 表达式 ] || [ 表达式 ]