'-gt'运算符在bash编程中意味着什么

时间:2014-02-14 18:29:28

标签: linux bash unix

嗨,我是bash编程的新手,我正在读代码,但我无法理解一件事。 -gt在这段代码中意味着什么

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

5 个答案:

答案 0 :(得分:5)

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

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

-gt大于。

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

答案 1 :(得分:2)

在BASH中,没有像在C或Java中找到的变量类型。

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

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

这个程序应该做什么?

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

但是,如果 foo bar 是数字,我想说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.

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

答案 2 :(得分:0)

这意味着:

 greater than

 >

答案 3 :(得分:0)

-gt表示“大于”

因此,if [ $result -gt 0 ]表示“如果$ result大于0。”

答案 4 :(得分:0)

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

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

http://www.pyeung.com/pages/unix/linux/bashcomparisonoperators.html