分享

test 与 文件测试命令

 何必清楚 2011-12-02

test 命令

操作符

测试内容

字符串测试

[ string1 = string2 ]

string1 等于 string2(=两侧必须有空格)

[ string1 == string2 ]

string1 等于 string2

[ string1 != string2 ]

string1 不等于 string2(!=两侧必须有空格)

[ string ]

string 不为空

[ -z string ]

string 的长度为0

[ -n string ]

string 的长度不为0

逻辑测试

[ string1 -a string2 ]

string1 和 string2都为真

[ string1 -o string2 ]

string1 和 string2至少有一个为真

[ !string1 ]

字符串不匹配

逻辑测试(复合命令)

pattern1 && pattern2

pattern1 和 pattern2都为真

pattern1 `

pattern1 或 pattern2至少有一个为真

!pattern1

模式不匹配

整数测试

[ int1 -eq int2 ]

int1 等于 int2

[ int1 -ne int2 ]

int1 不等于 int2

[ int1 -gt int2 ]

int1 大于 int2

[ int1 -ge int2 ]

int1 大于或等于 int2

[ int1 -lt int2 ]

int1 小于 int2

[ int1 -le int2 ]

int1 小于或等于 int2

用于文件测试的二进制操作符

[ file1 -nt file2 ]

如果文件file1比file2新则为真(根据修改时间)

[ file1 -ot file2 ]

如果文件file1比file2老则为真(根据修改时间)

[ file1 -ef file2 ]

如果文件file1比file2有相同的设备数或i结点数则为真


Example

[root@wingwu shell]# ln -s /root/shell/test.tar /root/shell/test/aaaa
[root@wingwu shell]# [[ /root/shell/test.tar -ef /root/shell/test/aaaa ]]
[root@wingwu shell]# echo $?
0
[root@wingwu shell]# cp /root/shell/test.tar /root/shell/test/aaaa
[root@wingwu shell]# [[ /root/shell/test.tar -ef /root/shell/test/aaaa ]]
[root@wingwu shell]# echo $?
1
[root@wingwu shell]# ln /root/shell/test.tar /root/shell/test/aaaa
[root@wingwu shell]# [[ /root/shell/test.tar -ef /root/shell/test/aaaa ]]
[root@wingwu shell]# echo $?
0


文件测试

测试操作符

测试结果为真是满足的条件

-b file

块文件

-c file

字符文件

-d file

目录文件

-e file

文件存在

-f file

普通文件存在,且不是目录

-G file

文件存在,且属于有效组ID时为真

-g file

set -group- ID被设置

-b file

块文件

-k file

Sticky位被设置

-L file

文件是一个符号连接

-p file

文件是一个管道文件

-O file

文件存在,且属于有效用户ID

-r file

文件可读

-S file

文件是一个socket

-s file

文件大小非0

-t fd

如果fd(文件描述符)被一个终端打开则为真

-u file

set -user- ID为被设置

-w file

文件可写

-x file

文件可执行


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多