常用比较和判断:
整数比较:
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于
例:if [ ${var} -le 10 ]; then
echo "${var}小于等于10"
fi
注意:if [ ]里两边要有空格
文件测试:
-f 存在且是普通文件
-d 存在且是目录
-s 存在且字节数大于0
-r 存在且可读
-w 存在且可写
-x 存在且可执行
例:if [ -f ${file} ];then
echo "${file}存在且是文件"
fi
逻辑判断使用 &&(且)、||(或)、!(取反)
例:if [ ! -d ${file} ]; then
echo "${file}不存在或者不是目录"
fi
字符串比较:常用比较运算符:= 或者(==)、!=
-z表示后面的值是否为空,为空则返回true,否则返回false。
-n表示判断后面的值是否为空,不为空则返回true,为空则返回false。
例:if [ -z ${str} ] || [ -z ${var} ]; then
echo "${str}值为空或者${var}的值为空"
fi
str="root"
if [ ${str} == 'root' ]; then
echo "${str}字符串与root相等"
fi
注意:
比较运算符的两边都有空格分隔(即==或=两边要有空格,如果没有空格,不能做判断,直接运行if后的语句),同时要注意比较运算符两边的变量是否可能为空,
例:str="root"
if [ ${str}=="root" ];then
echo "erro"
fi
==两边没有空格,不会进行if判断,直接运行echo "erro"
在使用变量比较字符串之前,最好在判断之前加一个判断变量是否为空 或者使用双引号将其括起来,
注意,必须使用双引号,因为变量在双引号中才会被解析。
例:str="root"
if [ -n ${str} ];then
echo "${str}值不为空"
fi
if [ "${str}" == "root" ];then
echo "${str}与root相等"
fi