Linux下test命令使用
test命令格式:
- 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)
===========================================================
例子:
- #!/bin/bash
- val1=10
- val2=11
- if [ $val1 -gt 5 ]
- then
- echo "The test value $val1 is greater than 5"
- fi
- if [ $val1 -eq $val2 ]
- then
- echo "The vaules are equal"
- else
- echo "The values are different"
- 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测试会检查指定的文件名是否在系统上以目录形式存在。当写文件到某个目录之前,或者是将文件放置到某个目录位置之前时,这会非常有用。
- #!/bin/bash
- if [ -d $HOME ]
- then
- echo "Your HOME directory exists"
- cd $HOME
- ls -a
- else
- echo "There is a problem with your HOME directory"
- fi
上面代码使用了-d测试条件来检查用户的$HOME目录是否存在。如果它存在的话,它将继续使用cd命令来切到$HOME目录并进行显示目录下的文件。
4、检查对象是否存在
-e比较允许你在脚本中使用对象前检查文件或目录对象是否存在:
- #!/bin/bash
- # checking if a directory exists
- if [ -e $HOME ]
- then
- echo "OK on the directory, now to check the file"
- # checking if a file exists
- if [ -e $HOME/testing ]
- then
- # the file exists, append date to it
- echo "Appending date to existing file"
- date >> $HOME/testing
- else
- # the file does not exist, create a new file
- echo "Creating new file"
- echo > $HOME/testing
- fi
- else
- echo "Sorry, you do not have a HOME directory"
- fi
5、检查文件
-e比较适用于文件和目录。但要确定指定的对象是个文件,你必须用-f比较:
- #!/bin/bash
- # check if a file
- if [ -e $HOME ]
- then
- echo "The object exists, is it a file?"
- if [ -f $HOME ]
- then
- echo "Yes, it is a file!"
- else
- echo "No, it is not a file!"
- if [ -f $HOME/.bash_history ]
- then
- echo "But this is a file!"
- fi
- fi
- else
- echo "Sorry, the object does not exist"
- fi
6、检查是否可读
在尝试从文件中读取数据之前,最好先测试一下是否能读文件。可以用-r测试。
7、检查空文件
用-s来检查文件是否为空,尤其是在你要删除文件时。当-s比较成功时要特别小心,它说明文件中有数据。
8、检查是否可写
-w比较用来判断你是否对文件有可写权限。
9、检查是否可执行
-x比较是一个简便的断判断你对某个特定文件是否有执行权限的方法。虽然可能大多数命令用不到它,但如果你要在shell中运行大量脚本,它可能很方便。
10、检查所属关系
-O比较允许你轻松地测试你是否是文件的属主。
11、检查默认属组关系
-G比较会检查文件的默认组,如果它匹配了用户的默认组,那就通过了
Linux下test命令使用相关推荐
- Linux下addr2line命令用法
Linux下addr2line命令用于将程序指令地址转换为所对应的函数名.以及函数所在的源文件名和行号.当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2li ...
- Linux查看WAS的jvm信息,linux 下使用命令查看jvm信息
java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...
- Linux下find命令详情
Linux下find命令在目录结构中搜索文件,并执行指定的操作. linux下find命令提供了相当多的查找条件,功能很强大,所以它的选项也很多,其中有许多的选项都值得我们深入的了解学习. 命令格式: ...
- Linux下date命令的修改时间问题
Linux下date命令的修改时间问题 最近好想学linux,刚好公司也有一台旧的电脑,可是有次公司突然停电了,我用date命令时出问题了,电脑的时间不对了,我后来到网上搜索了好久,也没找到同时修改时 ...
- Linux下find命令的使用(命令+案例)
一.find的作用? •递归式查找 •根据预设的条件递归查找对应的文件 二.find使用方法 – find [目录] [条件1]- -type 类型(f文本文件.d目录.l快捷方式) 代码如下: &l ...
- Linux下解决命令未找到的问题
Linux下解决命令未找到的问题 参考文章: (1)Linux下解决命令未找到的问题 (2)https://www.cnblogs.com/mnote/p/8832806.html 备忘一下.
- linux下find命令用法
一.Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} /; ...
- linux下sort命令使用详解---linux将文本文件内容加以排序命令
转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...
- Linux下history命令详解---转载
Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法: [www.linuxidc.com@linux]# history [n] [ ...
- linux下dd命令详解
linux下dd命令详解 名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果 ...
最新文章
- 远程过程调用失败0x800706be_WordPress5.0 远程代码执行分析
- 第10章 常用功能及函数集;客户端IP地址
- 谭浩强课后题之----求最大公约数和最小公倍数
- 拼接字符SQL语句拼接 最后一个字符多出 处理方式
- oracle如何配置dns连接,图文详解添加DNS服务器的操作步骤
- php极光推送教程,laravel框架使用极光推送消息操作示例
- VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群
- Ubuntu下安装和配置Apache及Apache2
- JAVA学习IO(1)
- pycharm—误删代码怎么办
- 枚举报错 Syntax error on token enum, interface expected
- SQL 格式化输出 千分位 ¥货币格式
- gpx文件解析 Demo
- 在网页中内嵌直接可以播放RTMP流的视频播放器
- 利用科来数据包播放器实现网络数据回放
- 骄傲地宣布一件事:月入3万的目标还没实现
- 51单片机按键控制数码管0~9_LED数码管精选电路方案合辑
- Sometimes you will never know the true value of a moment until it becomes a memory
- 华为MAC-VLAN举例
- 一文搞懂CAN FD总线协议帧格式
热门文章
- 关于Binder的点点滴滴(二)
- leetcode 973. 最接近原点的 K 个点(排序)
- 使用fuse.js_如何使用Fuse.js将搜索添加到React应用
- 数据库语言 数据查询_使用这种简单的查询语言开始查询数据
- 如何使用动态工具提示构建React Native图表
- 开源 数据仓库_使用这些开源工具进行数据仓库
- sphinx_Sphinx之谜:如何轻松地编写代码
- 未越狱设备提取数据_从三星设备中提取健康数据
- .NET面试题解析(02)-拆箱与装箱
- usaco Cow Tours