【问题标题】:What does '-gt' operator mean in Bash programming?'-gt' 运算符在 Bash 编程中是什么意思?
【发布时间】:2014-02-14 18:29:27
【问题描述】:

我正在阅读一些代码,但我无法理解一件事。

下面代码中的-gt是什么意思?

if [ $result -gt 0 ] ;
then
    exit 1 ;
fi

【问题讨论】:

  • 您了解man 命令吗? man command 将为您提供一个页面,其中包含有关 command 的信息。
  • @Kevin For bash, help 更有用。对于这个特定示例,help test帮助
  • @Kevin 但是-gt 不是命令,所以即使他看了也找不到任何东西。 man [ 是正确的查找方法,但未明确的 RTFM 并不是一个好的答案。
  • @amalloy [ 类似于test 命令,它不是 shell 的一部分。 test 是内置的 shell,[test 是别名。
  • info bashman bash 并搜索 -gt

标签: linux bash unix


【解决方案1】:

在 Bash 中,没有像 CJava 那样的变量类型。

想象一下,如果我有以下伪程序:

foo = 23
bar = 149
if ( $foo > $bar ) then
    say "Foo is bigger than bar"
elseif ( $bar > $foo ) then
    say "Bar is greater than foo"
else
    say "Bar and foo must be equal"
endif

这个程序应该做什么?

嗯,这取决于 foobar 是字符串还是数字。如果 foobar 是仅包含数字的库存 ID,我可能想说 bar 小于 foo 因为(如果您进行字符串比较)“1”小于“2”。

但是,如果 foobar 是数字,我想说 bar 大于 foo,因为 23 在数字上小于 149。

让 Bash 知道我是否应该对数字进行数字或字符串比较的唯一方法是为字符串和数字设置两个单独的布尔运算符。

例如:Foo 和 bar 是数字,我将使用数字比较:

foo=23
bar=149
if [[ $foo -gt $bar ]]
then
    echo "Foo is greater than bar."
elif [[ $bar -gt $foo ]]
    echo "Bar is greater than foo."
else
    echo "Bar and foo are equal."
fi

我会得到结果:

Bar is greater than foo.

如果 foo 和 bar 是字符串,我将使用字符串比较:

foo=23
bar=149
if [[ $foo > $bar ]]
then
    echo "Foo is greater than bar."
elif [[ $bar > $foo ]]
    echo "Bar is greater than foo."
else
    echo "Bar and foo are equal."
fi

我会得到:

Foo is greater than bar.

查看CONDITIONAL EXPRESSIONS 下用于 Bash 的 manpage,以查看字符串和数值的所有布尔表达式。

【讨论】:

  • 仅有的两个答案之一:1)链接到文档和 2)使其比直接问题更广泛。从搜索引擎点击到此时,两者都是必需的。
【解决方案2】:

这是整数变量的“大于”比较器。所以代码转换成伪代码: if($result > 0) ...

这是 Bash 比较器的一个很好的参考。关于它们最重要的是记住哪些用于字符串,哪些用于整数:

Linux Bash - Comparison Operators

【讨论】:

  • 仅有的两个答案之一:1)链接到文档和 2)使其比直接问题更广泛。从搜索引擎点击到此时,两者都是必需的。
【解决方案3】:

这是一个算术测试。 help test 告诉:

  arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                 -lt, -le, -gt, or -ge.

-gt 大于。

在您的示例中,如果变量 result 大于零,则条件为真。

【讨论】:

    【解决方案4】:

    这意味着:

     greater than
    

    或者

     >
    

    【讨论】:

    • 除了>-gt 不同。在test / [ 命令中,> 是字符串的大于运算符; -gt 用于整数。当然,在大多数其他情况下,> 用于输出重定向。
    【解决方案5】:

    -gt 表示“大于”

    所以,if [ $result -gt 0 ] 的意思是“如果 $result 大于 0”。

    【讨论】:

      猜你喜欢
      • 2013-05-07
      • 2015-09-18
      • 2017-03-29
      • 2011-03-16
      • 2011-07-09
      • 2016-07-23
      • 1970-01-01
      相关资源
      最近更新 更多