shell脚本编程之条件测试——test
test测试命令有三类测试表达式,第一类是进行数值的比较,第二类是进行字符串的比较,第三类是进行文件的测试,比如测试一个文件是否存在等。1.数值测试,需要两个操作数进行比较
-eq:测试两个数据是否相等,相等为真,不等为假
-ne:被测试的两个数值是否不相等,不等为真,相等为假;
-lt:被测试的两个数值,左边的是否小于右边的,小于为真,大于为假;
-gt:被测试的两个数值,左边的是否大于右边的,大于为真,小于为假;
-le:被测试的两个数值,左边的是否小于等于右边的;
总结一下就是:eq相等,ne不相等,gt大于,lt小于,ge大于等于,le 小于等于,not非,mod求模
~]$ test 3 -eq 4
~]$ echo $?
1
~]$ test 3 -ne 4
~]$ echo $?
0
~]$ test 3 -gt 4
~]$ echo $?
1
~]$ test 3 -lt 4
~]$ echo $?
0
在写脚本的时候我们会需要进行条件判断,所以我们需要用到test命令,这种命令在脚本里时只需要将测试的内容写在中括号里头就可以了,比如以下两种方法是相同的:
~]$ [ 2 -eq 2 ]
~]$ echo $?
0
~]$ test 2 -eq 2
~]$ echo $?
0
注意:这类命令一般没有执行结果,只有执行状态返回值,所以当我们要查看比对就过的时候需要使用echo命令将执行的结果显示出来。
这个测试命令可以配合if等命令进行条件判断,比如可以用vim写一个脚本:
#!/bin/bash
if [ 1 -eq 1 ] ; then
echo "相同"
else echo "不相同"
fi
~]$ vim b1
~]$ bash b1
相同
然后改一个数,就会输出不相同:
#!/bin/bash
if [ 1 -eq 2 ] ; then
echo "相同"
else echo "不相同"
fi
~]$ vim b1
~]$ bash b1
不相同
像其他测试的条件也可以写成这种脚本,就不一一列举了。
2.字符串测试:
双目操作符:
==|=:被测试的两个字符串是否相等,相同为真,不同为假;
比如:
~]$ [ abc == abc ]
~]$ echo $?
0
~]$ [ abc == abd ]
~]$ echo $?
1
!=:被测试的两个字符是否不相同,不同为真,相同为假;
这个符号的功能与==相反,比如
~]$ [ abc != abc ]
~]$ echo $?
1
~]$ [ abc != abd ]
~]$ echo $?
0
>:被测试的两个字符串在ascll码表中对应的二进制数据,左边是否大于右边,大于为真,小于为假;
页:
[1]