在 Linux Shell 脚本编程中,关系运算符和逻辑运算符是控制程序流程的重要工具。以下是它们的详细说明:
关系运算符用于比较两个值或变量之间的关系,返回真(true)或假(false)。
-eq
- 等于 (Equal)
[ $a -eq $b ]
-ne
- 不等于 (Not Equal)
[ $a -ne $b ]
-gt
- 大于 (Greater Than)
[ $a -gt $b ]
-lt
- 小于 (Less Than)
[ $a -lt $b ]
-ge
- 大于等于 (Greater or Equal)
[ $a -ge $b ]
-le
- 小于等于 (Less or Equal)
[ $a -le $b ]
=
- 字符串相等
[ "$a" = "$b" ]
!=
- 字符串不等
[ "$a" != "$b" ]
-z
- 字符串长度为0
[ -z "$a" ]
-n
- 字符串长度非0
[ -n "$a" ]
<
- 字符串小于 (按字典顺序)
[[ "$a" < "$b" ]]
>
- 字符串大于 (按字典顺序)
[[ "$a" > "$b" ]]
逻辑运算符用于组合多个条件。
!
- 逻辑非 (NOT)
[ ! false ]
-a
- 逻辑与 (AND) (在 [ ]
中使用)
[ $a -eq $b -a $c -eq $d ]
-o
- 逻辑或 (OR) (在 [ ]
中使用)
[ $a -eq $b -o $c -eq $d ]
&&
- 逻辑与 (AND) (在 [[ ]]
或命令中使用)
[[ $a -eq $b && $c -eq $d ]]
||
- 逻辑或 (OR) (在 [[ ]]
或命令中使用)
[[ $a -eq $b || $c -eq $d ]]
#!/bin/bash
a=10
b=20
# 数值比较
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
# 字符串比较
str1="abc"
str2="def"
if [ $str1 = $str2 ]
then
echo "$str1 = $str2 : str1 等于 str2"
else
echo "$str1 = $str2: str1 不等于 str2"
fi
# 逻辑运算
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
[ ]
测试结构中,运算符和操作数之间需要有空格[[ ]]
是 [ ]
的增强版,支持更多特性(( ))
中进行算术比较时,可以使用 ==
, !=
, >
, <
等C语言风格的运算符这些运算符是Shell脚本中条件判断和流程控制的基础,熟练掌握它们对于编写高效的Shell脚本非常重要。