shell中[[]]与[],=、==和-eq的辨析

1、==、=和-eq

在shell中,===运算符都可以用于判断两个字符串、两个字符串变量是否相同,== 支持模式匹配,而= 不支持模式匹配。
使用 -eq 来判断两个整数是否相等。

# 字符串比较
# 给变量赋值时,等号前后没有空格,有空格时是条件判断
string1=abc
string2=bcd
# [ "$string1" = "$string2" ]内的空格是必须的!!
if [ "$string1" = "$string2" ]; then
    echo "The strings are equal"
fi

#整数比较
num1=123
num3=123
# 注意中括号内的空格!!
if [ "$num1" -eq "$num2" ]; then
    echo "The numbers are equal"
fi

2、[[ ]] 和 [ ]

在 shell 脚本中,[[[ 都可以用于条件测试。
  [ 是一个标准的 Unix 命令,也被称为 test。它在所有 POSIX shell 中都可用,包括 sh、bash、ksh、dash 等。
  [[ 是 bash 和其他一些现代 shell(如 zsh 和 ksh)中的关键字,提供了比 [ 更强大的功能。例如,它支持字符串模式匹配和正则表达式匹配
[[[ 中,进行条件判断时,是使用=还是==呢?
  对于[,一般使用=进行条件判断,==不是一个标准的运算符,但是在某些shell(比如bash)中,在[使用==是可以的。对于[[===都可以在[[用于字符串比较, -eq用于整数比较。
  他们之间的对应关系: =用在[ 中; ==用在[[中。这样用是不会出错的。

[的用例:

if [ "$variable" = "value" ]; then
    echo "The variable equals the value"
fi

[[的用例:

# 支持通配符匹配
if [[ "$variable" == value* ]]; then
    echo "The variable starts with 'value'"
fi
# 支持正则表达式匹配
if [[ "$variable" =~ ^value ]]; then
    echo "The variable starts with 'value'"
fi

总结起来就是,[]支持的shell类型更多,兼容性更好,而[[]]的功能更强大。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值