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


    1、==、=和-eq

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

    # 字符串比较
    # 给变量赋值时,等号前后没有空格,有空格时是条件判断
    string1=abc
    string2=bcd
    # [ "$string1" = "$string2" ]内的空格是必须的!!
    if [ "$string1" = "$string2" ]; then
        echo "The strings are equal"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    #整数比较
    num1=123
    num3=123
    # 注意中括号内的空格!!
    if [ "$num1" -eq "$num2" ]; then
        echo "The numbers are equal"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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
    
    • 1
    • 2
    • 3

    [[的用例:

    # 支持通配符匹配
    if [[ "$variable" == value* ]]; then
        echo "The variable starts with 'value'"
    fi
    # 支持正则表达式匹配
    if [[ "$variable" =~ ^value ]]; then
        echo "The variable starts with 'value'"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

  • 相关阅读:
    L2-007 家庭房产 - java
    数据结构绪论,基本概念
    Cholesterol艾美捷胆固醇基参方案
    2022/8/9 考试总结
    一文搞懂 x64 IA-64 AMD64 Inte64 IA-32e 架构之间的关系
    类与面向对象
    互联网云厂商大转向:在海外重燃新「战事」
    python爬虫基础(二)
    【Excel】WPS单元格快速转换表格字母大小写
    Vue3中ref与reactive的区别
  • 原文地址:https://blog.csdn.net/m0_47584619/article/details/133137190