linux:shell脚本(逻辑判断和字符串比较)

常用比较和判断:
整数比较:

 -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

你可能感兴趣的:(linux:shell脚本(逻辑判断和字符串比较))