您的位置:首页 > 运维架构 > Shell

test 命令 评估条件表达式。

2010-04-29 16:16 691 查看

test 命令

用途

评估条件表达式。

语法

test Expression



Expression ]

描述

test 命令评估 Expression 参数, 如果表达式值为 True, 返回一个零(true)退出值。否则, test 命令返回一个非零(false)退出值。 如果没有参数,test 命令也返回一个非零退出值。

 

注:在命令的第二种格式中,[ ](方括号)必须被空白包围。

必须在 C shell 中对文件名进行显式测试。文件名替换(全局)导致 shell 脚本退出。

函数与运算符被 test 命令当作独立的参数。Expression 参数指的是一个需要被检查为 true 或 false 的条件的语句。下列函数可用来构造此参数:

-b FileName如果所指定的 FileName 存在且是一个块特殊文件,则返回一个 true 退出值。
-c FileName如果所指定的 FileName 存在且是一个字符特殊文件,则返回一个 true 退出值。
-d FileName如果所指定的 FileName 存在且是一个目录,则返回一个 true 退出值。
-e FileName如果所指定的 FileName 存在,则返回一个 true 退出值。
-f FileName如果所指定的 FileName 存在且是一个常规文件,则返回一个 true 退出值。
-g FileName如果所指定的 FileName 存在且它的设置组标识位已设置,则返回一个 true 退出值。
-h FileName如果所指定的 FileName 存在且是一个符号链接,则返回一个 true 退出值。
-k FileName如果所指定的 FileName 存在且其粘滞位已设置,则返回一个 true 退出值。
-L FileName如果所指定的 FileName 存在且是一个符号链接,则返回一个 true 退出值。
-n String1如果 String1 变量的长度为非零,则返回一个 true 退出值。
-p FileName如果所指定的 FileName 存在且是一个命名管道(FIFO),则返回一个 true 退出值。
-r FileName如果所指定的 FileName 存在且可被当前进程读取,则返回一个 true 退出值。
-s FileName如果所指定的 FileName 存在且长度大于零,则返回一个 true 退出值。
-t FileDescriptor如果文件描述符号为 FileDescriptor 的文件是打开的且与一个终端相连,则返回一个 true 退出值。
-u FileName如果所指定的 FileName 存在且它的设置用户标识位已被设置,则返回一个 true 退出值。
-w FileName如果所指定的 FileName 存在且写标志打开,则返回一个 true 退出值。 但是,FileName 在一个只读的文件系统中不可写,即使 test 指示为 true。
-x FileName如果所指定的FileName 存在且执行标志打开,则返回一个 true 退出值。如果所指定的文件存在且是一个目录,true 退出值表示当前进程被允许在目录中搜索。
-z String1如果 String1 变量的长度为 0(零),则返回一个 true 退出值。
String1= String2如果 String1 与 String2 的变量相同,则返回一个 true 退出值。
String1!=String2如果 String1 与 String2 的变量不相同,则返回一个 true 退出值。
String1如果 String1 变量不是一个空字符串,则返回一个 true 退出值。
Integer1 -eq Integer2如果Integer1 与 Integer2 的变量在数学上相等,则返回一个 true 退出值。任一比较 -ne, -gt, -ge, -lt, -le 可被 用来代替 -eq。
file1 -nt file2如果 file1 比 file2 更新,则为 true。
file1 -ot file2如果file1 比 file2 旧,则为 true。
file1 -ef file2如果 file1 是 file2 的另外一个名称,则为 true。
这些函数可与下列运算符连在一起:

!一元“非”运算符
-a二进制“与”运算符
-o二进制“或”运算符(就是说, -a 运算符的优先权比 -o 运算符高)
/(Expressi
9e8e
on/)
分组括号

退出状态

命令返回以下退出值:

0Expression 参数为 true。
1Expression 参数为 false 或丢失。
>1发生错误。

示例

为测试一个文件是否存在且非空, 输入:
 

if test ! -s "$1"
then
   echo $1 does not exist or is empty.
fi

如果被第一个位置的参数指定给 shell 过程的文件, $1, 不存在, test 命令显示一条出错消息。如果 $1 存在且大小大于 0,test 命令什么也不显示。

 

注:在 -s 函数与文件名之间必须有一空格。

$1 两边的引号确保即使值 $1 为一空字符串, test 也可正常工作。如果引号被省略且 $1 是空字符串,test 命令显示出错消息 test:期望参数。

为做一复杂比较,输入:
 

if [ $# -lt 2  -o  ! -e "$1" ]
then
   exit
fi

如果给出的 shell 过程少于两个位置参数或被 $1 指定的文件不存在, 则 shell 过程退出。特殊 shell 变量 $# 表示了在命令行输入的用以运行 shell 过程的位置参数的个数。

《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『shell 概述』, 总体上描述了 shell,定义了对理解 shell 有帮助的术语,描述了很多有用的 shell 功能。

文件

 

/usr/bin/test包含 test 命令。

相关信息

bsh 命令,csh 命令,find 命令,ksh 命令,sh 命令。

 

 

转自:http://study.chyangwa.com/IT/AIX/aixcmds5/test.htm#a208936e
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息