Linux下test命令使用

test命令格式: 

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  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
 在CODE上查看代码片派生到我的代码片
  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
 在CODE上查看代码片派生到我的代码片
  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
 在CODE上查看代码片派生到我的代码片
  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
 在CODE上查看代码片派生到我的代码片
  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比较会检查文件的默认组,如果它匹配了用户的默认组,那就通过了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Mysql网页式管理工具安全地访问数据库的方法

2019独角兽企业重金招聘Python工程师标准>>> 用Mysql网页式管理工具安全地访问数据库的方法 在使用通达OA系统时很多用户需要借助Mysql网页式管理工具进入后台数据库去查看数据&#xff0c;进行一些相应的操作。但是大多数时候用户安装完该工具后都是直接进入后台数…

Linux 下的DMA浅析

DMA是一种无需CPU的参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来&#xff0c;从而大大提高系统的吞吐率。DMA经常与硬件体系结构特别是外设的总线技术密切相关。 一、DMA控制器硬件结构 DMA允许外围设备…

从值栈中获取数据

使用struts2的标签ognl表达式获取值栈数据 <s:property value"ognl表达式"/> 一、获取字符串 示例 打印后台string变量的值 jsp页面 Java代码 二、获取对象 示例 打印user对象的userName与userPwd的值 jsp页面 java代码 三、获取list集合 Java代码 1.通过list[…

SQL 事务

事务的acid理解简介ACID&#xff0c;是指在可靠数据库管理系统&#xff08;DBMS&#xff09;中&#xff0c;事务(transaction)所应该具有的四个特性&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isola…

网络协议复习

不同协议所属的层次如下图&#xff1a; IP IP地址一开始是分类编址&#xff0c;到了20世纪90年代更换为无分类编址。分类编址时IP地址共有五类ABCDE。对于ABC类地址&#xff0c;IP地址都可以划分为网络标识和主机标识。从一个IP地址中提取网络地址要用网络掩码和IP地址进行与运…

CSDN-markdown编辑器使用手册

Markdown手册欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也…

Office 365身份认证管理-添加并验证联合认证域

首先需要安装MicrosoftOnlineServicesSign-inAssistant接受许可并安装安装完成接着安装WindowsAzureActiveDirectoryModuleforWindowsPowerShell安装程序启动接受许可设置安装路径开始安装安装完毕登陆并打开office365管理中心&#xff0c;选择添加一个域开始域添加向导输入我们…

codevs1040统计单词个数(区间+划分型dp)

1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入&#xff0c;且保证每行一定为20个)。要求将此字母串分成k…

翻译词典推荐

前言 今天在看一个API&#xff0c;遇到一些生词不会&#xff0c;花了些时间在选择词典上面&#xff0c;做个总结。 我的经历 先说说我使用词典的经历吧&#xff1a; 无网络条件&#xff1a;首选金山词霸&#xff0c;词霸本身1G多安装包配合将近2G的词典包&#xff0c;即便是断网…

用URLGather来管理和保存你的页面

下载链接&#xff1a;http://url-gather.software.informer.com/download/#downloading安装的过程简单&#xff0c;这里不一一叙述。安装成功后&#xff0c;找到软件安装的路径&#xff0c;如下&#xff1a;进入软件之后&#xff0c;你只要熟悉以下的功能就能轻松的管理你的网站…

Exynos4412 中断处理流程详解

Linux 中&#xff0c;当外设触发中断后&#xff0c;大体处理流程如下&#xff1a; a -- 具体CPU architecture相关的模块会进行现场保护&#xff0c;然后调用machine driver对应的中断处理handler&#xff1b; b -- machine driver对应的中断处理handler中会根据硬件的信息获取…

Exynos4412 中断驱动开发相关问题总结

1、Linux 中如何标识一个外部中断&#xff1f; 在linux kernel中&#xff0c;我们使用下面两个ID来标识一个来自外设的中断&#xff1a; a -- IRQ number CPU需要为每一个外设中断编号&#xff0c;我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID&#xff0c;和硬…

Exynos4412 IIC 总线驱动开发相关问题总结

一 、问题 1、IIC总线上的设备是怎么描述的&#xff1f; struct i2c_client{struct device dev;...};2、IIC总线上的驱动是怎么描述的&#xff1f; struct i2c_driver {struct device_driver driver;};3、IIC总线上的设备和驱动是怎么匹配的 1)、对于 Cortex - A8 通过driver…

sersync+rsync实现实时同步

在分布式应用中会遇到一个问题&#xff0c;就是多个服务器间的文件如何能始终保持一致。一种经典的办法是将需要保持一致的文件存储在NFS上&#xff0c;这种方法虽然简单方便但却将本来多点的应用在文件存储上又变成了单点&#xff0c;这违背了分布式应用部署的初衷。为了保留多…

Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发

前面在Exynos4412 IIC总线驱动开发&#xff08;一&#xff09;—— IIC 基础概念及驱动架构分析 中学习了IIC驱动的架构&#xff0c;下面进入我们的驱动开发过程 首先看一张代码层次图&#xff0c;有助于我们的理解 上面这些代码的展示是告诉我们&#xff1a;linux内核和芯片提…

Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析

关于Exynos4412 IIC 裸机开发请看 &#xff1a;Exynos4412 裸机开发 —— IIC总线 &#xff0c;下面回顾下 IIC 基础概念 一、IIC 基础概念 IIC(Inter&#xff0d;Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。I…

Python 爬虫进阶一之爬虫框架概述

综述 爬虫入门之后&#xff0c;我们有两条路可以走。 一个是继续深入学习&#xff0c;以及关于设计模式的一些知识&#xff0c;强化 Python 相关知识&#xff0c;自己动手造轮子&#xff0c;继续为自己的爬虫增加分布式&#xff0c;多线程等功能扩展。另一条路便是学习一些优秀…

1039. 到底买不买(20)

1039. 到底买不买&#xff08;20&#xff09; 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串&#xff0c;但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下&#xff0c;某串珠子里是否包含了全部自己想要的珠子&#xff1f;如果是&#xff0c…

Exynos4412 ADC 设备驱动开发

具体ADC硬件知识及裸机驱动请看&#xff1a; Exynos4412裸机开发 —— A/D转换器 1、原理图如下&#xff1a; 2、相关寄存器信息 ADC_BASE 0x126C0000ADCCON 0x0000 1<<0 | 1<<14 | 0X1<<16 | 0XFF<<6ADCDLY 0x000…

Python 爬虫进阶二之 PySpider 框架安装配置

PySpider官方文档 项目地址 官方文档 安装 phantomjs PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持 web 而不需浏览器支持&#xff0c;其快速、原生支持各种 Web 标准&#xff1a;DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。 PhantomJS 可以用于页…