【test、expr】条件控制(比较)

【test】
test一般有两种格式,即:
test condition  或  [ condition ]
使用方括号时,要注意在条件两边加上空格。测试文件状态的条件表达式很多,但是最常用的可在下表中查到。
-d    目录    -s    文件长度大于0、非空
-r    可读    -L    符号连接
-w    可写    -u    文件有suid位设置
-x    可执行    -f    正规文件
-e    文件存在    -c    字符特殊文件
-p    管道文件    -S    套接字特殊文件
-u    设SUID位 -g    设 SGID 位

-a    --逻辑与,操作符两边均为真,结果为真,否则为假。
-o    --逻辑或,操作符两边一边为真,结果为真,否则为假。
!    --逻辑否,条件为假,结果为真。

$ [ -w file1 -a -w file2 ]
$ test -w file1 -a -w file2
$? --显示最后命令的退出状态。 0表示没有错误,其他任何值表明有错误
--------------------------------------------------------------------------------------------------
字符串测试有5种格式:
test "string"
test operator "string"
test "string" operator "string"
[ operator "string" ]
[ "string" operator "string" ]

这里,string_operator可为:
=         两个字符串相等
!=        两个字符串不等
-z        空串
-n        非空串
$ test $str1 = $str2    $ echo $?  1    --str1=hel,str2=hello.注意空格!
$ test -z $CDPATH    $ echo $?  0
--------------------------------------------------------------------------------------------------
测试数值
测试数值可以使用许多操作符,一般格式如下:
"number" operator "number"
或者:
[ "number" operator "number" ]

numeric_operator可为:
-eq    数值相等。
-ne    数值不相等。
-gt    第一个数大于第二个数。
-lt    第一个数小于第二个数。
-le    第一个数小于等于第二个数。
-ge    第一个数大于等于第二个数。

$ [ "30" -lt "30" ]
$ echo $?
0
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
【expr】
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
    --expr也是一个手工命令行计数器。
    --成功返回 1,任何其他值为无效或错误

expression:
  ARG1 | ARG2       若ARG1 的值不为0 或者为空,则返回ARG1,否则返回ARG2
  ARG1 & ARG2       若两边的值都不为0 或为空,则返回ARG1,否则返回 0
  ARG1 < ARG2       ARG1 小于ARG2
  ARG1 <= ARG2      ARG1 小于或等于ARG2
  ARG1 = ARG2       ARG1 等于ARG2
  ARG1 != ARG2      ARG1 不等于ARG2
  ARG1 >= ARG2      ARG1 大于或等于ARG2
  ARG1 > ARG2       ARG1 大于ARG2
  ARG1 + ARG2       计算 ARG1 与ARG2 相加之和
  ARG1 - ARG2       计算 ARG1 与ARG2 相减之差
  ARG1 \* ARG2       计算 ARG1 与ARG2 相乘之积
  ARG1 / ARG2       计算 ARG1 与ARG2 相除之商
  ARG1 % ARG2       计算 ARG1 与ARG2 相除之余数

  字符串 : 表达式            定位字符串中匹配表达式的模式
  match 字符串/表达式        等于"字符串 :表达式"
  substr 字符串/偏移量/长度    替换字符串的子串,偏移的数值从 1 起计
  index 字符串/字符        在字符串中发现字符的地方建立下标,或者标0
  length 字符串            字符串的长度
  + 记号            将记号解析为字符串,即使它是一个类似"match"或
                运算符"/"那样的关键字
--------------------------------------------------------------------------------------------------------
example:
$ value=hello
$ expr $value = "hello"    --测试$value的值是否等于"hello"。注意空格!
$ 1            --相等,成功返回1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值