Shell中if-test命令

test命令可以判断三类条件

  • 数值比较
  • 字符串比较
  • 文件比较

test是shell内置命令,用来检测某个条件是否成立
test通常和if语句一起使用,并且大部分if语句都依赖test
shell test命令的用法有两种:

第一种:
test expression		#当test判断expression成立时,退出状态为0,否则为非0值
第二种:
[ expression ]		#[ ]和expression的两边都有空格,这个空格是必须的,否则会导致语法错误
					#[ ]写法更简洁,使用频率更高

1.数值比较:

比较描述
n1 -eq n2检查n1是否与n2相等
n1 -ge n2检查n1是否大于或等于n2
n1 -gt n2检查n1是否大于n2
n1 -le n2检查n1是否小于或等于n2
n1 -lt n2检查n1是否小于n2
n1 -ne n2检查n1是否不等于n2
  • 例1:
    在这里插入图片描述
  • 例2:
    在这里插入图片描述

2.字符串比较:

比较说明
str1 = str2检查str1是否和str2相同
str1 != str2检查str1是否和str2不同
str1 < str2检查str1是否比str2小
str1 > str2检查str1是否比str2大
-n str1检查str1的长度是否非0
-z str1检查str1的长度是否为0
比较字符串是否相等
  • test比较字符串相等性时会将所有的标点和大写也考虑在内
  • 方法:
[ str1 = str2 ]
[ str1 != str2 ] 
  • 例1:
    在这里插入图片描述
  • 例2:
    在这里插入图片描述
比较字符串的大小
  • 字符串大小的比较遵循字典顺序,规则如下:
  • 1.如果第一个字符串是第二个字符串的前缀,那么第一个小(比如a小于about)
  • 2.从字符串的开头比较,按照字母顺序,a比b小(比如about小于ball)
  • 3.如果第一个字符相同,再比较第二个(比如about小于above)
  • 方法:
[ str1 < str2 ]
[ str1 > str2 ]
  • 例:
    在这里插入图片描述
比较字符串的长度
  • 没有被定义的字符串长度默认为0
  • 方法:
[ -n str1 ]		#检查str1的长度是否非0
[ -z str1 ]		#检查str1的长度是否为0
  • 例:
    在这里插入图片描述

3.文件的比较:

比较说明
-d file检查file是否存在并是一个目录
-e file检查file是否存在
-f file检查file是否存在并是一个文件
-r file检查file是否存在并可读
-s file检查file是否存在并非空
-w file检查file是否存在并可写
-x file检查file是否存在并可执行
-O file检查file是否存在并属当前用户所有
-G file检查file是否存在并且默认组与当前用户相同
file1 -nt file2检查file1是否比file2新
file1 -ot file2检查file1是否比file2旧
检查file是否存在并是一个目录
  • 此处的$HOME是shell中的环境变量
  • 例:
    在这里插入图片描述
-e检查file是否存在
  • 例:
    在这里插入图片描述
-f检查file是否存在并是一个文件
  • 例:
    在这里插入图片描述
-r检查文件是否存在并可读
  • 例:
    可读:
    在这里插入图片描述
    不可读:
    在这里插入图片描述
-s检查文件是否存在并为非空
  • 例:
    第一次执行:
    在这里插入图片描述
    第二次执行:
    在这里插入图片描述
-w检查文件是否存在并可写
  • 例:
    执行时使用普通用户:
    在这里插入图片描述
    在这里插入图片描述
-x检查文件是否存在并可执行
  • 例:
    在这里插入图片描述
    在这里插入图片描述
-O检查file是否存在并属当前用户所有
  • 例:
    在这里插入图片描述
-G检查文件是否存在并且默认组与当前用户相同

在这里插入图片描述

比较文件的新旧
  • 例:
    在这里插入图片描述
多个条件同时比较
  • 例:
    在这里插入图片描述
test命令中可使用变量
  • 在test中使用变量需要用双方括号包围[[ ]]
  • 例:
    在这里插入图片描述
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值