以bash开头:-lt和-gt参数


24

我从bash开始,发现以下内容:

if test $first -lt $second
then
  echo $first is lower than $second
else
  if test $first -gt $second
  then
    echo $first is higher than $second
  else
    echo $first and $second are equals
  fi
fi

对于阅读脚本并执行它,我知道它的作用,但不知道-lt和-gt的作用。

有人可以告诉我这种“工具”的名称是什么,它们(-lt和-gt)的作用是什么?谢谢!


9
抱歉,但是我值得指出echo代码中的语句回答了您的问题。
devnull 2014年

周围有变量缺失报价
斯特凡Chazelas

Answers:


29

less than和的缩写greater than。它用于bash中的整数比较。您可以输入man test以下内容阅读更多内容:

   ....
   INTEGER1 -gt INTEGER2
          INTEGER1 is greater than INTEGER2
   ....
   INTEGER1 -lt INTEGER2
          INTEGER1 is less than INTEGER2
   ....

7

您可以在命令()的文档中找到它的定义,-lt也可以-gt在bash的文档中找到它的定义,因为它是bash 中的内置命令(就像在大多数其他shell中一样)。testman testtest

-lt-gt是数字比较(小于[不等于],大于[不等于])。还有更少/更大或相等的运算符-le-ge,以及相等和不相等的运算符-eq-ne。这些是数字运算符,因此,如果任一侧都不是数字,并且9被认为小于,则会出现错误10

之所以-lt使用这样的名称而不是通常的名称,<是因为该字符<将被解释为重定向。运算符=!=也存在,但它们执行字符串比较:test 00 -eq 0true test 00 = 0为false。

某些外壳程序(包括bash)也具有运算符,<并且>它们执行字符串字典比较,因此test 9 \< 10是假的,因为9它在排序之前1(反斜杠可防止将字符<解释为重定向运算符)。这些shell还为测试提供了双括号语法,例如[[ 9 < 10 ]](与相对[ 9 \< 10 ]),它们内部不能具有重定向,因此<不需要用引号引起来。


4

他们只是操作员。

简单地说: gtlt表示>(大于)和<(小于)。

您可以在此处查看有关运算符的更多信息:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.