linux shell编程学习--test测试比较命令

来源:互联网 发布:手机怎么添加wifi网络 编辑:程序博客网 时间:2024/04/30 01:45

在linux shell编程使用的过程中,难免会遇到一些测试和比较问题。shell提供了test命令,方便进行测试比较操作。test不仅可以测试逻辑表达式,还可以进行文件,数字,字符串的比较。本文是一些常见用法的学习总结。

在介绍test命令之前,先简单介绍下shell命令的返回值含义。在shell中,如果命令返回0,则表示成功;任何非0的返回值,都表示失败;同时shell提供了特殊参赛$?来获取上个命令的返回值。

文件比较操作

test命令,支持文件比较操作。主要可以比较两个文件是否为同一个文件,两个文件修改时间的先后。

命令参数 含义 FILE1 -ef FILE2 两个文件指向同一个inode,既是硬链接,则为真 FILE1 -nt FILE2 FILE1比FILE2更新,既FILE1修改时间晚于FILE2,则为真 FILE1 -ot FILE2 FILE1比FILE2更旧,既FILE1修改时间早于FILE2,则为真

在下面的例子中,分别有三个文件,其中file2.txt是file1.txt的硬链接。

shuanghu@shuanghu:test_command$ls -l-rw-rw-r-- 2 shuanghu shuanghu    0  514 12:21 file1.txt-rw-rw-r-- 2 shuanghu shuanghu    0  514 12:21 file2.txt-rw-rw-r-- 1 shuanghu shuanghu    0  514 12:22 file3.txtshuanghu@shuanghu:test_command$ test file1.txt -ef file2.txt ;echo $?1shuanghu@shuanghu:test_command$ test file1.txt -ef file3.txt ;echo $?0shuanghu@shuanghu:test_command$ test file1.txt -nt file3.txt;echo $?0shuanghu@shuanghu:test_command$ test file1.txt -ot file3.txt ;echo $?1

文件属性操作

test命令可以判断文件是否存在,以及侦测各种的文件属性。

命令参数 含义 -b file file存在,并且为块特殊文件,则为真 -c file file存在,并且为字符特殊文件,则为真 -d file file存在,并且为目录,则为真 -e file file存在,则为真 -f file file存在,并且为常规文件,则为真 -g file file存在,并且设置了文件的 SGID 位,则为真 -G file file存在,并且为组所有,则为真 -r file file存在,并且有读权限,则为真 -s file file存在,并且长度大于0,则为真 -w file file存在,并且有写权限,则为真 -x file file存在,并且有执行权限,则为真

算术比较运算

在shell中,test命令可以比较两个数字的大小,相等等。

操作符 含义 num1 -eq num2 两个数字相等,则为真 num1 -ge num2 num1大于等于num2,则为真 num1 -gt num2 num1大于num2,则为真 num1 -le num2 num1小于等于num2,则为真 num1 -lt num2 num1小于num2,则为真 num1 -ne num2 num1不等于num2,则为真

使用例子如下:

shuanghu@shuanghu:tmp$ test 1 -eq 2 ;echo $?1shuanghu@shuanghu:tmp$ test 1 -ge 2 ;echo $?1shuanghu@shuanghu:tmp$ test 1 -gt 2 ;echo $?1shuanghu@shuanghu:tmp$ test 1 -le 2 ;echo $?0shuanghu@shuanghu:tmp$ test 1 -lt 2 ;echo $?0shuanghu@shuanghu:tmp$ test 1 -ne 2 ;echo $?0

字符串比较运算

shell中,test命令,也可以进行字符串的比较。包括判断字符串是否为空,大于,小于,等于等常见操作。
具体shell中字符串的操作,可以详细见本人的另外一篇博客《shell编程学习–字符串的使用操作》

逻辑运算

test可以进行基本的逻辑运算

表达式 含义 test EXPRESSION EXPRESSION表达式为真,则结果为真 test ! EXPRESSION EXPRESSION表达式为假,则结果为真 test EXPRESSION1 -a EXPRESSION2 逻辑与,EXPRESSION1与EXPRESSION2都为真,结果为真 test EXPRESSION1 -o EXPRESSION2 逻辑或,EXPRESSION1与EXPRESSION2有一个为真,结果为真
shuanghu@shuanghu:tmp$ test 1 -lt 2 ;echo $?0shuanghu@shuanghu:tmp$ test ! 1 -gt 2 ;echo $?0shuanghu@shuanghu:tmp$ test  1 -lt 2 -a 2 -eq 2;echo $?0shuanghu@shuanghu:tmp$ test  1 -lt 2 -o 2 -ne 2;echo $?0
0 0
原创粉丝点击