在 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脚本非常重要。