shell 条件测试

作者: ropon 分类: Shell 发布时间: 2020-01-20 17:38
# 条件测试
# test <测试表达式>
# [ <测试表达式> ] 一般使用 -a 且 -o 或 -gt 大于 -lt 小于 整数
# [[ <测试表达式> ]] 可以使用通配符进行模式匹配 && || > < 
# (( <测试表达式> )) 可以使用通配符进行模式匹配

# test语法
test -f /root/666.sh && echo true || echo false # 存在/root/666.sh文件返回true 反之false
test -f /root/222.sh || touch 222.sh # 文件不存在就创建
test -z "teststring" && echo true || echo false #如果s字符串长度为0 成立返回true 反之false

# [ x ]语法
[ -f /root/666.sh ] && echo true || echo false # 存在/root/666.sh文件且是普通文件返回true 反之false

# 常用文件测试操作符
# -d directory 存在且是目录返回true 反之false
# -f file 存在且是普通文件返回true 反之false
# -e exist 存在返回true 反之false
# -s size 存在且文件大小不为0返回true 反之false
# -r read 存在且可读返回true 反之false
# -w write 存在且可写返回true 反之false
# -x executable 存在且可执行返回true 反之false
# -L link 存在且链接文件返回true 反之false
# f1 -nt f2 newer than 文件f1比文件f2新返回true 反之false
# f1 -ot f2 older than 文件f1比文件f2旧返回true 反之false

# 字符串测试操作符
# -n no zero "字符串" 字符串长度不为0返回true 反之false
# -z zero "字符串" 字符串长度为0返回true 反之false
# "字符串1" == "字符串2" 相等返回true 反之false
# "字符串1" != "字符串2" 不相等返回true 反之false

# 整数比较操作符
# [] test			(()) [[]]	
# -eq				==或=		相等 equal
# -ne				!=		    不相等 not equal		
# -gt				>		    大于 greater than		
# -ge				>=		    大于等于 greater equal		
# -lt				<		    小于 less than		
# -le				<=		    小于等于 less equal		

# 逻辑操作符
# [] test			(()) [[]]	
# -a				&&		    与|且 and
# -o				||		    或 or
# !				    !		    非 not

echo 1.apache
echo 2.nginx
echo 3.tomcat
read -p "please select op: " op
[ "$op" == "1" ] && {
	echo "select apache"
	exit 0
}
[ "$op" == "2" ] && {
	echo "select nginx"
	exit 0
}
[ "$op" == "3" ] && {
	echo "select tomcat"
	exit 0
}
[[ ! "$op" =~ [1-3] ]] &&{
	echo "select error only input 1|2|3"
	exit 1
}

# 总结
# 				[]					test				[[]]				(())
# 加空格		 y			 		 y			 		 y			 		 n
# 操作符		 -a -o !     		 同[]     		     && || !     		 同[[]]
# 整数比较符	 -gt -lt -ge -le -eq 同[]				 -gt -lt -ge -le -eq
													#   > < >= <= =			同[[]]
# 字符串比较符	 = == !=             同[] 				  同[]				  同[]
# 是否支持统配符  n					 同[]				   y                  同[]

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!