Bash
Bash:雙等於 vs -eq
我在 bash 中進行整數比較(試圖查看使用者是否以 root 身份執行),我發現了兩種不同的方法:
雙等於:
if [ $UID == 0 ] then fi
-eq
if [ $UID -eq 0 ] then fi
我知道 bash 中沒有 >= 或 <=,只有 -ge 和 -le,那麼
==
如果有 a ,為什麼還有 a-eq
?它比較雙方的方式有什麼不同嗎?
==
是 的bash
- 特定別名=
,它執行字元串(詞法)比較而不是-eq
數字比較。(它從 Perl 倒過來:單詞風格的運算符是數字的,符號運算符是詞彙的。)
詳細說明博洛文的答案……
字元串沒有
>=
或<=
比較運算符。但是您可以將它們與((...))
算術命令一起使用來比較整數。如果您在內部使用它們,您還可以使用其他字元串比較運算符(
==
,!=
,<
,>
, 但不是=
)來比較整數((...))
。例子
- 兩者都
[[ 01 -eq 1 ]]
進行(( 01 == 1 ))
整數比較。兩者都是真實的。- 兩者都
[[ 01 == 1 ]]
進行[ 01 = 1 ]
字元串比較。兩者都是假的。- 兩者都
(( 01 -eq 1 ))
將(( 01 = 1 ))
返回錯誤。注意:並非所有 shell 都支持雙括號語法
[[...]]
和雙括號語法。((...))