加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Shell test 命令简介

发布时间:2023-06-08 14:03:52 所属栏目:教程 来源:
导读:在 Shell 中每个命令都有其应用场景,test 命令也不例外,其应用场景几乎遍布我们整个 Shell 脚本的生命周期,基本上 Shell 脚本里面都会有其身影。

当我们对数值进行算术运算,当我们需要对文件进行判断,当我们
在 Shell 中每个命令都有其应用场景,test 命令也不例外,其应用场景几乎遍布我们整个 Shell 脚本的生命周期,基本上 Shell 脚本里面都会有其身影。

当我们对数值进行算术运算,当我们需要对文件进行判断,当我们需要对逻辑或字符串进行判断的时候,这些情况都需要使用 test 命令来配合运算符进行操作。

在我们学习 test 命令之前,我们需要知道在 Linux 中执行命令返回 0 为正常,返回非 0 表示异常,可以利用 $? 来获取返回值。在下面的 test 操作中我们就会运用此特性来进行测试比较。

test 为 Shell 内置命令,其通常需要与 if 语句一块使用。

语法格式为 test expression, 当 test 判断 expression 为成立时,返回状态为 0,否则为非 0 值。

test 命令还可以简写为 [ ], 需要在两边中括号与 expression 是有一个空格,这个空格是必须的,否则会导致语法错误。[] 的写法更加简洁,比 test 使用频率更高。

我们可以简单来看示例:

[root@master shell_test]# cat test1.sh #!/bin/bash// 使用中括号if test  -ne ;thenecho trueelseecho falsefi[root@master shell_test]# bash test1.sh true[root@master shell_test]# cat test2.sh #!/bin/bash// 使用testif [  -eq  ];thenecho trueelseecho falsefi[root@master shell_test]# bash test2.sh true

test 命令操作主要配合比较运算符进行,可大体分为文件判断 / 数组比较 / 字符串判断 / 逻辑运算等。

数值比较

数组比较其实就是 test 命令配合关系运算符进行数字比较。

比较符    描述    示例
-eq,equal    等于    [1 -eq 1] 为 true
-ne,not equal    不等于    [ 1 -ne 1] 为 false
-gt,greater than    大于    [2 -gt 1] 为 true
-lt,lesser than    小于    [2 -lt 1] 为 false
-ge,greater or equal    大于或等于    [2 -ge 1] 为 true
-le,lesser or equal    小于或等于    [2 -le 1] 为 false
关系运算顾名思义就是比较数字的大小,注意关系运算符作用的对象为数字。

#!/bin/bashnum1=num2=echo num1 为:${num1}echo num2 为:${num2}if [ $num1 -eq $num2 ]then
   echo $num1 -eq $num2 : num1 等于 num2else
   echo $num1 -eq $num2: num1 不等于 num2fiif [ $num1 -ne $num2 ]then
   echo $num1 -ne $num2: num1 不等于 num2else
   echo $num1 -ne $num2 : num1 等于 num2fiif [ $num1 -gt $num2 ]then
   echo $num1 -gt $num2: num1 大于 num2else
   echo $num1 -gt $num2: num1 不大于 num2fiif [ $num1 -lt $num2 ]then
   echo $num1 -lt $num2: num1 小于 num2else
   echo $num1 -lt $num2: num1 不小于 num2fiif [ $num1 -ge $num2 ]then
   echo $num1 -ge $num2: num1 大于或等于 num2else
   echo $num1 -ge $num2: num1 小于 num2fiif [ $num1 -le $num2 ]then
   echo $num1 -le $num2: num1 小于或等于 num2else
   echo $num1 -le $num2: num1 大于 num2fi
运行结果为:

num1 为:

num2 为: -eq : num1 不等于 num2 -ne : num1 不等于 num2 -gt : num1 不大于 num2 -lt : num1 小于 num2 -ge : num1 小于 num2 -le : num1 小于或等于 num
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章