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

use*_*579 32 shell bash test

我从 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
Run Code Online (Sandbox Code Playgroud)

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

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

cuo*_*glm 34

它是less thanand的缩写greater than。它用于 bash 中的整数比较。您可以通过键入man test以下内容阅读更多信息:

   ....
   INTEGER1 -gt INTEGER2
          INTEGER1 is greater than INTEGER2
   ....
   INTEGER1 -lt INTEGER2
          INTEGER1 is less than INTEGER2
   ....
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 10

你可以找到的定义-lt-gt对的文档test的命令man test),或bash的文档中,因为test是一个内置的命令在bash(像大多数其他炮弹)。

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

-lt使用like而不是通常的名称的原因<是该字符<将被解释为重定向。运算符=and!=也存在,但它们执行字符串比较:test 00 -eq 0为真而test 00 = 0为假。

包括 bash 在内的一些 shell 也有运算符<>执行字符串字典序比较,因此test 9 \< 10为 false,因为它9已排好序1(反斜杠防止字符<被解释为重定向运算符)。这些 shell 还提供了用于测试的双括号语法,例如[[ 9 < 10 ]](与 相对[ 9 \< 10 ]),其中不能有重定向,因此<不需要引用。