Shell中的内置命令--test

China☆狼群 提交于 2020-02-15 07:42:11

1.概念及用法

  • test 是Shell内置命令,用来检测某个条件是否成立
  • test通常和if语句一起使用,并且大部分if语句都依赖test
  • test命令有很多选项,可以进行数值、字符串和文件三个方面的检测
  • Shell test命令的用法为:test expression
  • 当test判断expression成立时,退出状态为0,否则为非0值
  • test命令也可以简写为【】,它的用法为:[ expression ]
  • 注意: 【】和expression之间的空格,这两个空格是必须的,否则会有语法错误
  • 【】的写法更加简洁,使用率更高

2.test可以判断3类条件(数值比较)

  • 数值条件测试可以用在数字和变量上
比较 描述
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
  • 示例
    在这里插入图片描述
  • 不能在test命令中使用浮点值
    在这里插入图片描述

3.test可以判断3类条件(字符串比较)

比较 描述
str1 = str2 检查str1与str2相同
str1 != str2 检查str1与str2不同
str1 < str2 检查str1是否比str2
str1 > str2 检查str1是否比str2
-n str1 检查str的长度是否为非0
-z str 检查str的长度是否为0
  • 比较字符串相等性的时候,test的比较会将所有的标点和大写也考虑在内
  • 示例1
    在这里插入图片描述
  • 示例2
  • $USER #获取当前用户
    在这里插入图片描述
  • 示例3
    在这里插入图片描述
  • 示例4
  • a3在测试中未被定义,但是测试结果依然为空
  • 未被定义的变量在测试中会被认为为空
  • 空和未初始化的变量对于shell脚本测试来说,有致命的影响,如果你不确定一个变量的内容,最好在数值或字符串比较中使用-n和-z来测试下这个变量是否含有值
    在这里插入图片描述

4.test可以判断3类条件(文件比较)

比较 描述
-d file 是否存在并为一个目录
-e file 是否存在
-f file 是否存在并为一个文件
-r file 是否存在并可读
-s file 是否存在且非空
-w file 是否存在并可写
-x file 是否存在并执行
-o file 是否存在并属当前用户所有
-G file 是否存在并默认组与当前用户相同
file1 -nt file2 file1是否比file2
file1 -ot file2 file1是否比file2
  • 示例1
    在这里插入图片描述
  • 示例2
    在这里插入图片描述
  • 示例3
    在这里插入图片描述

5.符合条件测试

  • if-then语句允许使用布尔逻辑来组合测试,有两种布尔运算符可用:
  • [ condition1 ] && [condition2 ]
  • [ condition1 ] || [condition2 ]
  • 示例
    在这里插入图片描述

6.if-then的高级特性

  • 使用双尖括号(())
  • 使用方括号
  • 表示通配
  • 示例
    在这里插入图片描述
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!