test
rose1 发表于 2020-07-27 17:41浏览次数:
在类似Unix的操作系统上,test命令检查文件类型并比较值。 本文档介绍了GNU / Linux版本的测试。
查看英文版
目录:
1 test 运行系统环境
2 test 说明
3 test 语法
4 test 例子
test 运行系统环境
Linux
test 说明
测试用作有条件执行Shell命令的一部分。
测试以EXPRESSION确定的状态退出。将EXPRESSION放在方括号([和])之间与使用test测试EXPRESSION相同。要在命令提示符下查看退出状态,请回显值“ $? ”。值0表示表达式的值为true,值为1表示表达式的值为false。
查看英文版
test 语法
test EXPRESSION
[ EXPRESSION ]
表达方式
表达式采用以下形式:
( EXPRESSION ) | 表达是真的 |
! EXPRESSION | 表达式为假 |
EXPRESSION1 -a EXPRESSION2 | 这两个表达式和表达式2为真 |
EXPRESSION1 -o EXPRESSION2 | 无论是表达式或表达式2为真 |
-n STRING | STRING的长度不为零 |
STRING | 等效于-n STRING |
-z STRING | STRING的长度为零 |
STRING1 = STRING2 | 字符串相等 |
STRING1 != STRING2 | 字符串不相等 |
INTEGER1 -eq INTEGER2 | INTEGER1等于INTEGER2 |
INTEGER1 -ge INTEGER2 | INTEGER1大于或等于INTEGER2 |
INTEGER1 -gt INTEGER2 | INTEGER1大于INTEGER2 |
INTEGER1 -le INTEGER2 | INTEGER1小于或等于INTEGER2 |
INTEGER1 -lt INTEGER2 | INTEGER1小于INTEGER2 |
INTEGER1 -ne INTEGER2 | INTEGER1不等于INTEGER2 |
FILE1 -ef FILE2 | FILE1和FILE2具有相同的设备和inode编号 |
FILE1 -nt FILE2 | FILE1比FILE2更新(修改日期) |
FILE1 -ot FILE2 | FILE1早于FILE2 |
-b FILE | FILE存在且块特殊 |
-c FILE | FILE存在且字符特殊 |
-d FILE | FILE存在并且是目录 |
-e FILE | FILE存在 |
-f FILE | FILE存在并且是常规文件 |
-g FILE | FILE存在且为set-group-ID |
-G FILE | FILE存在并且由有效组ID拥有 |
-h FILE | FILE存在并且是符号链接(与-L相同) |
-k FILE | FILE存在并且已设置其粘性位 |
-L FILE | FILE存在并且是符号链接(与-h相同) |
-O FILE | FILE存在并且由有效用户ID拥有 |
-p FILE | FILE存在并且是一个命名管道 |
-r FILE | FILE存在并且授予读取权限 |
-s FILE | FILE存在且大小大于零 |
-S FILE | FILE存在并且是一个套接字 |
-t FD | 在终端上打开文件描述符FD |
-u FILE | FILE存在,并且其设置用户ID位置1 |
-w FILE | FILE存在并且授予写权限 |
-x FILE | FILE存在并授予执行(或搜索)权限 |
除了-h和-L以外,所有与FILE相关的测试都取消引用符号链接。请注意,对于shell,括号需要转义(例如,用反斜杠)。INTEGER也可以是-l STRING,其值为STRING的长度。
注意:您的外壳可能具有自己的test版本,通常会取代此处描述的版本。请参阅您的Shell文档以获取有关其支持的选项的详细信息。
查看英文版
test 例子
test 100 -gt 99 && echo "Yes, that's true." || echo "No, that's false."
因为100大于99,所以此命令将打印文本“ 是的,是的” 。
test 100 -lt 99 && echo "Yes." || echo "No."
该命令将打印文本“ No. ”,因为100不少于99。
[ "awesome" = "awesome" ]; echo $?
该命令将打印“ 0 ”,因为该表达式为真;这两个字符串是相同的。
[ 5 -eq 6 ]; echo $?
该命令将打印“ 1 ”,因为表达式为假;否则为0。5不等于6。
查看英文版