嗨,我是bash编程的新手,我正在读代码,但我无法理解一件事。 -gt在这段代码中意味着什么
if [ $result -gt 0 ] ;
then
exit 1 ;
fi
答案 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