【问题标题】:Bash if condition: "-gt" vs ">" when using [[ [duplicate]Bash if condition: "-gt" vs ">" 当使用 [[ [重复]
【发布时间】:2019-07-21 23:48:01
【问题描述】:

当我运行以下脚本时

if [[ 10 -gt 2 ]]
then
    echo "10 is greater than 2"
else
    echo "10 is less than 2"
fi

它输出预期的结果

10 is greater than 2

但是,当我运行以下一个时

if [[ 10 > 2 ]]
then
    echo "10 is greater than 2"
else
    echo "10 is less than 2"
fi

输出如下结果

10 is less than 2

在这种情况下,它似乎正在执行字符串比较。这两者背后的逻辑是什么?

【问题讨论】:

    标签: bash shell


    【解决方案1】:

    如您所料,> 执行字符串比较,-gt 执行数字比较。这在the Bash Reference Manual, §6.4 "Bash Conditional Expressions" 中有记录。

    【讨论】:

    • > 字符串比较运算符也在POSIX standard for the test / [ ] command 中被提及,尽管它实际上不是标准的一部分;但如果您的 test / [ ] 命令支持它,它应该具有相同的语义。与[[ ]] 的一个区别是:test[ ] 是普通命令,因此> 将被解析为输出重定向,除非它被引用或转义。
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多