插件窝 干货文章 如何正确运用linux关系运算符

如何正确运用linux关系运算符

运算符 echo bash 字符串 829    来源:    2025-05-15

Linux关系运算符的正确运用

关系运算符在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
    

使用技巧和注意事项

  1. 空格要求:运算符前后必须有空格

    # 正确
    if [ $a -eq $b ]
    
    # 错误
    if [$a -eq$b]
    
  2. 变量引用:字符串比较时变量最好用双引号括起来

    if [ "$var" = "value" ]
    
  3. 复合条件:使用-a(AND)和-o(OR)连接多个条件

    if [ $age -gt 18 -a $age -lt 60 ]
    
  4. 现代语法:推荐使用[[ ]]代替[ ],它支持更多特性且更安全

    if [[ $str == pattern ]]
    
  5. 算术比较:在(( ))中可以使用数学比较符号

    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脚本的基础。