插件窝 干货文章 linux关系运算符有哪些

linux关系运算符有哪些

运算符 字符串 示例 比较 972    来源:    2025-05-15

在 Linux Shell 脚本中,关系运算符主要用于数值比较和字符串比较。以下是常见的分类和示例:


一、数值比较运算符

(用于 []test 命令时用特定符号,(())[[]] 中可用数学符号)

运算符 描述 示例
-eq 等于 [ $a -eq $b ]
-ne 不等于 [ $a -ne $b ]
-gt 大于 [ $a -gt $b ]
-ge 大于或等于 [ $a -ge $b ]
-lt 小于 [ $a -lt $b ]
-le 小于或等于 [ $a -le $b ]

(()) 中的数学符号(推荐在算术运算中使用):

if (( a == b )); then   # 注意是 ==
if (( a > b )); then

二、字符串比较运算符

(建议在 [[]] 中使用,避免特殊字符问题)

运算符 描述 示例
=== 字符串相等 [[ "$str1" == "$str2" ]]
!= 字符串不相等 [[ "$str1" != "$str2" ]]
> 按字典顺序大于 [[ "$str1" > "$str2" ]]
< 按字典顺序小于 [[ "$str1" < "$str2" ]]
-z 字符串长度为0(空) [ -z "$str" ]
-n 字符串长度非0(非空) [ -n "$str" ]

三、文件测试运算符

(虽然不是严格的关系运算符,但常用于条件判断)

运算符 描述 示例
-e 文件/目录是否存在 [ -e "/path" ]
-f 是普通文件 [ -f "/path" ]
-d 是目录 [ -d "/path" ]
-r 可读 [ -r "/path" ]
-w 可写 [ -w "/path" ]
-x 可执行 [ -x "/path" ]
-s 文件大小大于0 [ -s "/path" ]

四、逻辑运算符

(组合多个条件)

运算符 描述 示例
! [ ! -f "/path" ]
-a 与(AND) [ $a -eq 1 -a $b -eq 2 ](已过时)
-o 或(OR) [ $a -eq 1 -o $b -eq 2 ](已过时)
&& 逻辑与 [[ $a -eq 1 && $b -eq 2 ]]
|| 逻辑或 [[ $a -eq 1 || $b -eq 2 ]]

注意事项

  1. 空格敏感[ $a -eq $b ] 方括号内必须保留空格。
  2. 字符串 vs 数值-eq 是数值比较,== 是字符串比较。
  3. 推荐使用 [[]]:比 [] 更安全,支持 &&|| 和模式匹配。

    if [[ "$str" == "Linux" && $num -gt 10 ]]; then
    
  4. 避免未定义变量:在 [][[]] 中引用变量时建议加双引号,如 "$var"


示例脚本

#!/bin/bash
a=10
b=20

# 数值比较
if [ $a -lt $b ]; then
    echo "a < b"
fi

# 字符串比较
str1="hello"
if [[ "$str1" == "hello" ]]; then
    echo "字符串匹配"
fi

# 文件检查
if [ -f "/etc/passwd" ]; then
    echo "文件存在"
fi

掌握这些运算符能高效编写 Shell 脚本中的条件逻辑。