test命令格式: 

[cpp] view plain copy  
  1. test condition  

通常,在if-then-else语句中,用[]代替,即[ condition ]。注意:方括号两边都要用空格。

 

1、数值比较 

=========================================================== 
比 较 描 述 
----------------------------------------------------------- 
n1 -eq n2 检查n1是否与n2相等 (equal) 
n1 -ge n2 检查n1是否大于或等于n2 (greater and equal) 
n1 -gt n2 检查n1是否大于n2 (greater than) 
n1 -le n2 检查n1是否小于或等于n2 (less and equal) 
n1 -lt n2 检查n1是否小于n2 (less than) 
n1 -ne n2 检查n1是否不等于n2 (not equal) 
=========================================================== 

例子:

[cpp] view plain copy  
  1. #!/bin/bash   
  2.   
  3. val1=10   
  4. val2=11  
  5.   
  6. if [ $val1 -gt 5 ]   
  7. then   
  8. echo "The test value $val1 is greater than 5"   
  9. fi  
  10.   
  11. if [ $val1 -eq $val2 ]   
  12. then   
  13. echo "The vaules are equal"   
  14. else   
  15. echo "The values are different"   
  16. fi  


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 
=========================================================== 

需要注意的是:

- 字符串比较大于小于号必须转义,即加反斜线。 
- 字符串比较的顺序是按ASCII表的顺序的,大写字母比小写字母的值小。

文件比较 
=======

这是shell编程中最强大的也是最常用到的比较。test命令允许你测试Linux文件系统上文件和目录的状态,如下表: 

================================================================== 
比 较 描 述 
------------------------------------------------------------------ 
-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旧 
================================================================== 

 

3、检查目录

-d测试会检查指定的文件名是否在系统上以目录形式存在。当写文件到某个目录之前,或者是将文件放置到某个目录位置之前时,这会非常有用。 

[cpp] view plain copy  
  1. #!/bin/bash   
  2. if [ -d $HOME ]   
  3. then   
  4. echo "Your HOME directory exists"   
  5. cd $HOME   
  6. ls -a   
  7. else   
  8. echo "There is a problem with your HOME directory"   
  9. fi  

上面代码使用了-d测试条件来检查用户的$HOME目录是否存在。如果它存在的话,它将继续使用cd命令来切到$HOME目录并进行显示目录下的文件。

 

4、检查对象是否存在

-e比较允许你在脚本中使用对象前检查文件或目录对象是否存在:

[cpp] view plain copy  
  1. #!/bin/bash   
  2. # checking if a directory exists   
  3. if [ -e $HOME ]   
  4. then   
  5. echo "OK on the directory, now to check the file"   
  6. # checking if a file exists   
  7. if [ -e $HOME/testing ]   
  8. then   
  9. # the file exists, append date to it   
  10. echo "Appending date to existing file"   
  11. date >> $HOME/testing   
  12. else   
  13. # the file does not exist, create a new file   
  14. echo "Creating new file"   
  15. echo > $HOME/testing   
  16. fi   
  17. else   
  18. echo "Sorry, you do not have a HOME directory"   
  19. fi  


5、检查文件

-e比较适用于文件和目录。但要确定指定的对象是个文件,你必须用-f比较: 

[cpp] view plain copy  
  1. #!/bin/bash   
  2. # check if a file   
  3. if [ -e $HOME ]   
  4. then   
  5. echo "The object exists, is it a file?"   
  6. if [ -f $HOME ]   
  7. then   
  8. echo "Yes, it is a file!"   
  9. else   
  10. echo "No, it is not a file!"   
  11. if [ -f $HOME/.bash_history ]   
  12. then   
  13. echo "But this is a file!"   
  14. fi   
  15. fi   
  16. else   
  17. echo "Sorry, the object does not exist"   
  18. fi  


6、检查是否可读

在尝试从文件中读取数据之前,最好先测试一下是否能读文件。可以用-r测试。


7、检查空文件

用-s来检查文件是否为空,尤其是在你要删除文件时。当-s比较成功时要特别小心,它说明文件中有数据。


8、检查是否可写

-w比较用来判断你是否对文件有可写权限。


9、检查是否可执行

-x比较是一个简便的断判断你对某个特定文件是否有执行权限的方法。虽然可能大多数命令用不到它,但如果你要在shell中运行大量脚本,它可能很方便。


10、检查所属关系

-O比较允许你轻松地测试你是否是文件的属主。


11、检查默认属组关系

-G比较会检查文件的默认组,如果它匹配了用户的默认组,那就通过了

Linux下test命令使用相关推荐

  1. Linux下addr2line命令用法

    Linux下addr2line命令用于将程序指令地址转换为所对应的函数名.以及函数所在的源文件名和行号.当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2li ...

  2. Linux查看WAS的jvm信息,linux 下使用命令查看jvm信息

    java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...

  3. Linux下find命令详情

    Linux下find命令在目录结构中搜索文件,并执行指定的操作. linux下find命令提供了相当多的查找条件,功能很强大,所以它的选项也很多,其中有许多的选项都值得我们深入的了解学习. 命令格式: ...

  4. Linux下date命令的修改时间问题

    Linux下date命令的修改时间问题 最近好想学linux,刚好公司也有一台旧的电脑,可是有次公司突然停电了,我用date命令时出问题了,电脑的时间不对了,我后来到网上搜索了好久,也没找到同时修改时 ...

  5. Linux下find命令的使用(命令+案例)

    一.find的作用? •递归式查找 •根据预设的条件递归查找对应的文件 二.find使用方法 – find [目录] [条件1]- -type 类型(f文本文件.d目录.l快捷方式) 代码如下: &l ...

  6. Linux下解决命令未找到的问题

    Linux下解决命令未找到的问题 参考文章: (1)Linux下解决命令未找到的问题 (2)https://www.cnblogs.com/mnote/p/8832806.html 备忘一下.

  7. linux下find命令用法

    一.Linux中find常见用法示例 ·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} /; ...

  8. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  9. Linux下history命令详解---转载

    Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法: [www.linuxidc.com@linux]# history [n] [ ...

  10. linux下dd命令详解

    linux下dd命令详解    名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果 ...

最新文章

  1. 远程过程调用失败0x800706be_WordPress5.0 远程代码执行分析
  2. 第10章 常用功能及函数集;客户端IP地址
  3. 谭浩强课后题之----求最大公约数和最小公倍数
  4. 拼接字符SQL语句拼接 最后一个字符多出 处理方式
  5. oracle如何配置dns连接,图文详解添加DNS服务器的操作步骤
  6. php极光推送教程,laravel框架使用极光推送消息操作示例
  7. VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群
  8. Ubuntu下安装和配置Apache及Apache2
  9. JAVA学习IO(1)
  10. pycharm—误删代码怎么办
  11. 枚举报错   Syntax error on token enum, interface expected
  12. SQL 格式化输出 千分位 ¥货币格式
  13. gpx文件解析 Demo
  14. 在网页中内嵌直接可以播放RTMP流的视频播放器
  15. 利用科来数据包播放器实现网络数据回放
  16. 骄傲地宣布一件事:月入3万的目标还没实现
  17. 51单片机按键控制数码管0~9_LED数码管精选电路方案合辑
  18. Sometimes you will never know the true value of a moment until it becomes a memory
  19. 华为MAC-VLAN举例
  20. 一文搞懂CAN FD总线协议帧格式

热门文章

  1. 关于Binder的点点滴滴(二)
  2. leetcode 973. 最接近原点的 K 个点(排序)
  3. 使用fuse.js_如何使用Fuse.js将搜索添加到React应用
  4. 数据库语言 数据查询_使用这种简单的查询语言开始查询数据
  5. 如何使用动态工具提示构建React Native图表
  6. 开源 数据仓库_使用这些开源工具进行数据仓库
  7. sphinx_Sphinx之谜:如何轻松地编写代码
  8. 未越狱设备提取数据_从三星设备中提取健康数据
  9. .NET面试题解析(02)-拆箱与装箱
  10. usaco Cow Tours