关系运算符在Linux脚本编程中用于比较数值或字符串,是条件判断的基础。以下是Linux中关系运算符的详细说明和正确使用方法。
这些运算符用于比较数值:
-eq
:等于 (equal)
if [ $a -eq $b ]; then
echo "$a 等于 $b"
fi
-ne
:不等于 (not equal)
if [ $a -ne $b ]; then
echo "$a 不等于 $b"
fi
-gt
:大于 (greater than)
if [ $a -gt $b ]; then
echo "$a 大于 $b"
fi
-lt
:小于 (less than)
if [ $a -lt $b ]; then
echo "$a 小于 $b"
fi
-ge
:大于等于 (greater or equal)
if [ $a -ge $b ]; then
echo "$a 大于等于 $b"
fi
-le
:小于等于 (less or equal)
if [ $a -le $b ]; then
echo "$a 小于等于 $b"
fi
这些运算符用于比较字符串:
=
:字符串相等
if [ "$str1" = "$str2" ]; then
echo "字符串相等"
fi
!=
:字符串不相等
if [ "$str1" != "$str2" ]; then
echo "字符串不相等"
fi
-z
:字符串长度为0 (zero)
if [ -z "$str" ]; then
echo "字符串为空"
fi
-n
:字符串长度非0 (non-zero)
if [ -n "$str" ]; then
echo "字符串非空"
fi
这些运算符用于测试文件属性:
-e
:文件存在
if [ -e "/path/to/file" ]; then
echo "文件存在"
fi
-f
:是普通文件
if [ -f "/path/to/file" ]; then
echo "是普通文件"
fi
-d
:是目录
if [ -d "/path/to/dir" ]; then
echo "是目录"
fi
-r
:可读
if [ -r "/path/to/file" ]; then
echo "文件可读"
fi
-w
:可写
if [ -w "/path/to/file" ]; then
echo "文件可写"
fi
-x
:可执行
if [ -x "/path/to/file" ]; then
echo "文件可执行"
fi
空格要求:运算符前后必须有空格
# 正确
if [ $a -eq $b ]
# 错误
if [$a -eq$b]
变量引用:字符串比较时变量最好用双引号括起来
if [ "$var" = "value" ]
复合条件:使用-a
(AND)和-o
(OR)连接多个条件
if [ $age -gt 18 -a $age -lt 60 ]
现代语法:推荐使用[[ ]]
代替[ ]
,它支持更多特性且更安全
if [[ $str == pattern ]]
算术比较:在(( ))
中可以使用数学比较符号
if (( a > b )); then
echo "a大于b"
fi
#!/bin/bash
# 检查参数数量
if [ $# -ne 2 ]; then
echo "用法: $0 数字1 数字2"
exit 1
fi
# 比较两个数字
num1=$1
num2=$2
if [ $num1 -eq $num2 ]; then
echo "$num1 等于 $num2"
elif [ $num1 -gt $num2 ]; then
echo "$num1 大于 $num2"
else
echo "$num1 小于 $num2"
fi
# 检查文件是否存在并可读
file="example.txt"
if [ -f "$file" -a -r "$file" ]; then
echo "$file 存在且可读"
else
echo "$file 不存在或不可读"
fi
掌握这些关系运算符的正确使用方法是编写健壮Shell脚本的基础。