我从 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 than
and的缩写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
是数字比较(小于[且不等于],大于[且不等于])。还有小于/大于等于运算符-le
and -ge
,以及等于和不等于运算符-eq
and -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 ]
),其中不能有重定向,因此<
不需要引用。