【test、expr】条件控制(比较)
  wuqQcfl7z3Ys 2023年11月02日 34 0
【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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xlvdqsD183Uk   2023年11月02日   44   0   0 带参数字符串命令行
  I0t3qRT6ovZX   2023年11月02日   22   0   0 bc字符串ci
wuqQcfl7z3Ys