古城堡 发表于 2018-8-26 13:07:14

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]
查看完整版本: shell脚本编程之条件测试——test