二元比较操作符比较两个变量或是数值。注意整数和字符串比较的分别。
-
-eq
-
等于
if [ "$a" -eq "$b" ]
-ne
-
不等于
if [ "$a" -ne "$b" ]
-gt
-
大于
if [ "$a" -gt "$b" ]
-ge
-
大于等于
if [ "$a" -ge "$b" ]
-lt
-
小于
if [ "$a" -lt "$b" ]
-le
-
小于等于
if [ "$a" -le "$b" ]
<
-
小于(在双括号里使用)
(("$a" < "$b"))
<=
-
小于等于 (在双括号里使用)
(("$a" <= "$b"))
>
-
大于 (在双括号里使用)
(("$a" > "$b"))
>=
-
大于等于(在双括号里使用)
(("$a" >= "$b"))
-
=
-
等于
if [ "$a" = "$b" ]
==
-
等于
if [ "$a" == "$b" ]
它和=是同义词。
==比较操作符在一个双方括号测试和一个单方括号号里意思不同。
1 [[ $a == z* ]] # 如果变量$a以字符"z"开始(模式匹配)则为真. 2 [[ $a == "z*" ]] # 如果变量$a与z*(字面上的匹配)相等则为真. 3 4 [ $a == z* ] # 文件扩展和单元分割有效. 5 [ "$a" == "z*" ] # 如果变量$a与z*(字面上的匹配)相等则为真. 6 7 # 多谢Stéphane Chazelas
!=
-
不相等
if [ "$a" != "$b" ]
操作符在[[ ... ]]结构里使用模式匹配.
<
-
小于,依照ASCII字符排列顺序
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意"<"字符在[ ] 结构里需要转义
>
-
大于,依照ASCII字符排列顺序
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意">"字符在[ ] 结构里需要转义.
-z
-
字符串为"null",即是指字符串长度为零。
-n
-
字符串不为"null",即长度不为零.
在测试方括号里进行-n测试时一定要把字符串用引号起来。用没有引号引起的! -z或者在方括号里只有未引号引起的字符串 来进行测试一般都能工作,然而,这其实是不安全的测试。应该总是用引号把测试字符串引起来.