shell之test和expr的用法

上一篇 / 下一篇  2013-05-04 15:33:48 / 个人分类:Shell脚本

  1. test命令用于对文件、字符串和数字的测试
      a. 测试文件的状态
          格式:test 条件 或者 [ 条件 ]
          文件测试状态如下:
          -d:目录     -s:文件长度大于0、非空     -f:正规文件      -L:符合连接   
          -u:文件有suid位设置          -r:可读      -w:可写       -x:可执行

         注:1. 使用方括号时记得在条件两边加上空格。
               2. 使用两种方法测试文件ghr.txt是否可写并用最后退出状态测试是否成功。记住, 0表示
成功,其他为失败

          例1:测试文件ghr.txt是否为目录,并用最后退出状态测试是否成功。
                 >test -d ghr.txt   //也可以写成命令[ -d ghr.txt ]
                 >echo $?      //返回0,表示ghr.txt为目录,返回1,表示ghr.txt不是目录。
          例2:测试ghr.txt的文件权限是否设置了suid位
                 >test -u ghr.txt  或者 [ -u ghr.txt ]
                 >echo $?
      b. 使用逻辑操作符测试文件的状态
          shell提供三种逻辑操作符功能:
          -a:表示与,-o:表示或,!:表示非
          例3:测试文件ghr.txt是否具有可读可写的权限。
                  >[ -r ghr.txt -a -w ghr.txt ]
                  >echo $?   //执行结果为0,表示ghr.txt文件可读可写。
          例4:测试文件ghr.txt可读或者ghr为目录。
                  >[ -r ghr.txt -o -d ghr ]
                  >echo $?
          例5:测试ghr.txt文件不为目录。
                  >[ ! -d ghr.txt ]
                  >echo $?
      c. 字符串测试
          格式如下:
          1. test 字符串      2. test 操作符 字符串      3. test 字符串 操作符 字符串
          4. [ 操作符 字符串 ]       5.[ 字符串 操作符 字符串 ]
          操作符有以下几个:=、!=、-z:表示空串、-n:表示非空串
          例6:测试环境变量HOME是否为空。
                  >[ -z $HOME ]
                  >echo $?
          例7:测试字符串ghr和ghr1是否相等。
                  >test "ghr" = "ghr1"  或者写成 [ "ghr" = "ghr1"]
                  >echo $?
          例8:测试环境变量HOME的值是否为ghr.
                  >[ $HOME = "ghr" ]  或者写成 test $HOME = "ghr"
                  >echo $?
      d. 测试数值。
          格式如下:
          test 数字 操作符 数字    或者写成 [ 数字 操作符 数字 ]
          操作符有以下几种:
          1. -eq:相等       2. -ne:不相等       3. -gt:大于       4. -lt:小于      5. -ge:大于等于     6. -le:小于等于
          例9:判断123是否等于234.
                  >test 123 -eq 234
                  >echo $?
          例10:判断变量ghr的值是否大于123.
                  >ghr=456
                  >test $ghr -gt 123 或者写成 [ $ghr -gt 123 ]
                  >echo $?
  2. expr的用法:
      a. expr命令一般用于整数值,也用于字符串。
         命令格式: expr 参数值 操作符 参数值
          例11:>expr 10 + 5
                     结果为:15
          例12:>expr 10 /5
                     结果为:2
          例13:>expr 10-5
                     结果为:5
          例14:>expr 10 \* 5
                     结果为:50
                     注:使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
      b. 用于增量计数:
            expr在循环中用于增量计数。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。
          例15:>LOOP=0
                   >LOOP=`expr $LOOP + 1`
      c. 数值测试:
            可以用expr测试一个数。如果试图计算非整数,将返回错误。
          例16:>expr ghr + 1
                  执行结果:expr: non-numeric argument。
          例18:>ghr="abc"
                   >expr $ghr = "abc"
                  执行结果为1。  //注:expr返回结果为1表示执行成功,切忌不要与echo $?输出的结果搞混淆了。  
      d. 模式匹配:
          这个功能不是很明白如何使用。







TAG:

 

评分:0

我来说两句

Open Toolbar