为什么会这样:
Output=$( tail --lines=1 $fileDiProva )
##[INFO]Output = "OK"
if [[ $Output == $OK ]]; then
echo "OK"
else
echo "No Match"
fi
这不是吗?
Output=$( tail --lines=1 $fileDiProva )
##[INFO]Output = "OK"
if [[ $Output -eq $OK ]]; then
echo "OK"
else
echo "No Match"
fi
有什么区别?在==和-eq之间?
谢谢!
答案 0 :(得分:5)
-eq
是算术测试。
您正在比较字符串。
来自help test
:
Other operators:
arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,
-lt, -le, -gt, or -ge.
当您使用[[
并使用-eq
作为运算符时,shell会尝试评估LHS和RHS。以下示例将解释它:
$ foo=something
+ foo=something
$ bar=other
+ bar=other
$ [[ $foo -eq $bar ]] && echo y
+ [[ something -eq other ]]
+ echo y
y
$ something=42
+ something=42
$ [[ $foo -eq $bar ]] && echo y
+ [[ something -eq other ]]
$ other=42
+ other=42
$ [[ $foo -eq $bar ]] && echo y
+ [[ something -eq other ]]
+ echo y
y
答案 1 :(得分:0)
第一个==
位于字符串比较运算符的部分,它只能比较两个字符串。
第二个-eq
位于最后一部分ARG1 OP ARG2
(最后一个),其文档说明"ARG1" and "ARG2" are integers
。
答案 2 :(得分:0)
-eq
,-lt
,-gt
仅用于算术值比较(整数)。
==
用于字符串比较。