bash中执行比较的几种方法

bash 脚本中的 test 命令用于检查表达式的有效性,检查命令或表达式为 true 或者 false。此外,它还可以用于检查文件的类型和权限。

如果命令或表达式有效,则 test 命令返回0,否则返回1。

使用 test 命令

test 命令的基本语法如下所示:

test “var1” operator “var2”

如果其中用到了变量,需要在变量名中使用双引号。

我们看下面的例子,使用 test 命令检查10是否等于20,以及10是否等于10:

$ test 10 -eq 20 && echo "true" || echo "false"

上面的命令中:

  • test - test 命令

  • 10 - 第一个变量

  • -eq - 比较运算符

  • 20 - 第二个变量

如果给定的表达式有效,则执行第一个命令,否则执行第二个命令。

在上述测试命令中,可以使用方括号 [] 来代替 test 命令。不过有一点需要记住,[ 标记和要比较的变量之间需要有空格:

[ 10 -eq 20 ] && echo "true" || echo "false"

图片

除了整数以外,也可以在 bash 中使用 test 命令比较字符串,下面我们来看一些例子。

使用 test 命令比较字符串

检查字符串是否不为空

-n 选项用于检查字符串长度是否为非零。如果字符串不为空则返回 true,如果字符串为空,则返回 false:

$ [ -n "sam" ] && echo "True" || echo "False"

图片

检查字符串是否为空

-z 选项用于检查字符串长度是否为零。如果字符串长度为零,则返回true,否则返回false:

$ [ -z "sam" ] && echo "True" || echo "False"

检查字符串是否相等

“=”运算符检查string1是否等于string2。如果两个字符串相等,则返回0;如果两个字符串不相等,则返回1:

$ [ "sam" = "SAM" ] && echo $? || echo $?

在这里,表达式略有不同。stdout 变量打印使用 $? 而不是 true 或 false。

检查字符串是否不相等

!=运算符检查 String1 是否不等于 String2。如果这两个字符串不相等,则返回0。如果两个字符串相等,则它返回1:

[ "abc" != "ABC" ] && echo $? || echo $?

图片

test 命令比较整数

检查数字是否相等

-eq 选项检查两个整数是否相等,如果相等返回0,否则返回1:

[ 10 -eq 20 ] && echo $? || echo $?

检查数字是否不相等

-ne 选项检查两个整数是否不相等,如果不相等返回0,否则返回1:

[ 10 -ne 20 ] && echo $? || echo $?

检查一个数字是否大于等于另一个

选项 -ge 用于检查整数1 是否大于等于整数2,如果是则返回0,否则返回1:

[ 100 -ge 10 ] && echo $? || echo $?

-gt 运算符检查整数1是否大于整数2。如果是,则返回0。否则,返回1:

[ 20 -gt 10 ] && echo $? || echo $?

检查一个数字是否小于等于另一个

-le 运算符检查整数1是否小于或等于整数2。如果为真,则返回0,否则返回1:

[ 5 -le 10 ] && echo $? || echo $?

-lt 运算符检查整数1是否小于整数2。如果整数1小于整数2,则返回0,否则返回1:

[ 5 -lt 10 ] && echo $? || echo $?

图片

test 命令与文件和目录操作

test 命令还可用于文件和目录,下面我们来看几个例子。

下面的命令用于检查文件对于当前用户是否可执行,如果可执行,返回0,否则返回1:

[ test -x filename ] && echo executable || echo non-executable

也可以相同的方式检查文件的其他权限,比如 r 和 w。在此可使用的其他常用参数包括:



命令描述
-e目录/文件是否存在
-f是否为文件
-d是否为目录
-s文件大小是否大于0
-L是否为符号链接
-S是否为套接字(socket)

在 bash 脚本中使用 test 命令

上面的例子我们是使用的一行代码做的演示,除此以外,我们还可以在 bash 脚本中使用 test 命令以及 if else 分支条件。

下面我们来看一个简单的例子,传递参数用于比较两个数字:

#!/bin/bash

大家可以执行一下,看看结果,如下图所示:

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alvinToffler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值