基本格式:
test expression

expression为test命令构造的表达式。
这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式
返回值:
test命令或者返回0(真) 或者返回1(假).

test可理解的表达式类型分为四类:

  • 表达式判断
  • 字符串比较
  • 数字比较
  • 文件比较

1)判断表达式

if test  (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式 2                两个表达式都为真
test 表达式1 –o 表达式2                 两个表达式有一个为真

2)判断字符串

test –n 字符串                          字符串的长度非零
test –z 字符串                           字符串的长度为零
test 字符串1=字符串 2          字符串相等
test 字符串1 !=字符串2         字符串不等

3)判断整数

test 整数1 –eq 整数2                       整数相等
test 整数 1 –ge 整数2                      整数1大于等于整数2
test 整数1 –gt 整数 2                       整数1大于整数2
test 整数1 –le 整数 2                       整数1小于等于整数2
test 整数1 –lt 整数 2                         整数1小于整数2
test 整数1 –ne 整数 2                      整数1不等于整数2

4)判断文件

test  File1 –ef  File2                            两个文件具有同样的设备号和i结点号
test  File1 –nt  File2                            文件1比文件2 新
test  File1 –ot  File2                            文件1比文件2 旧
test –b File            文件存在并且是块设备文件
test –c File            文件存在并且是字符设备文件
test –d File            文件存在并且是目录
test –e File            文件存在
test –f File            文件存在并且是正规文件
test –g File            文件存在并且是设置了组ID
test –G File            文件存在并且属于有效组ID
test –h File            文件存在并且是一个符号链接(同-L)
test –k File             文件存在并且设置了sticky位
test –b File            文件存在并且是块设备文件
test –L File            文件存在并且是一个符号链接(同-h)
test –o File            文件存在并且属于有效用户ID
test –p File            文件存在并且是一个命名管道
test –r File            文件存在并且可读
test –s File            文件存在并且是一个套接字
test –t FD                文件描述符是在一个终端打开的
test –u File            文件存在并且设置了它的set-user-id位
test –w File            文件存在并且可写
test –x File            文件存在并且可执行

test expression 可以简写成 [  expression  ] 的形式。

注意:在使用"["简写test时,左中括号后面的空格和右括号前面的空格是必需的,如果没有空格,Shell不可能辨别表达式何时开始何时结束.

也就是说

test option file

可以全部改写成:

[ option file ]

例如:

test –w File
 
改写成

[ –w File ]

【示例】

//判断第一个参数是否为空字符串,不空则打印
if test -n "$1"
then
echo "$1"
fi

Shell: test的更多相关文章

  1. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  2. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  3. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  4. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  5. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  6. Shell碎碎念

    1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...

  7. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...

  8. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  9. Linux环境下shell和vim中乱码原因及消除办法

    shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...

  10. 【说解】在shell中通过mkfifo创建命名管道来控制多个进程并发执行

    背景: 工作中有两个异地机房需要传数据,数据全名很规范,在某个目录下命名为统一的前缀加上编号.如/path/from/file.{1..100}.而机房间的专线对单个scp进程的传输速度是有限制的,比 ...

随机推荐

  1. html5 canvas 画图表

    (function () { var canvas = document.createElement("canvas"); canvas.width = 800; canvas.h ...

  2. 使用webstom或者idea上传代码到github或coding

    鉴于github网络速度太慢,建议用coding.先介绍github上传方式,因为webstom或idea集成了github,方法简单. git是一个版本控制器,他的作用是管理代码.比如你修改了代码, ...

  3. 史上最全的Ajax基础详解

    同步请求和异步请求 先解释一下同步和异步的概念: 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯 ...

  4. 关系数据库SQL之可编程性事务

    前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数.存储过程,本文来介绍一下事务的使用.(还是以前面的银 ...

  5. [Asp.net 5] Options-配置文件之后的配置

    今天要讲的是OptionsModel解决方案,整个解决方案中也只有Microsoft.Framework.OptionsModel一个工程.按照表面文字OptionsModel应该翻译成选项模型,但是 ...

  6. 自定义MVC框架

    我们在学习自定义MVC框架的时候常常会听到Model1 ,Model2和MVC.那么什么是Model1 什么是Model2什么又是MVC呢? 什么是Model1? Model1就是一种纯jsp开发技术 ...

  7. DDD心得

    使用DDD分层架构有哪些好处 帮你更集中的管理业务逻辑. 帮你降低各层间,以及各业务模块间的依赖关系. 帮你更方便的进行单元测试. 我的DDD分层架构使用经验 使用充血模型,将业务逻辑尽量放到领域实体 ...

  8. linux命令大全之ln命令详解(创建软链接和硬链接)

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接,分为软链接.硬链接.软链接相当于windows的快捷方式,下面是使用方法和示例   ln是linux中又一 ...

  9. iscroll

    在原生APP的开发中,有一个常见的功能,就是下拉刷新的功能,这个想必大家都是知道的,但是原生APP的开发,有一个很大的问题就是,你每次更新一些功能,就要用户重新下载一次版本,尤其是在iOS系统中,新版 ...

  10. 深入理解及应用Position

    position俗称定位,主要取值及作用如下: static 默认值.没有定位,出现在正常文档流中 absolute 绝对定位,相对于position为absolute.relative.fixed的 ...