插件窝 干货文章 linux关系运算符支持哪些类型

linux关系运算符支持哪些类型

运算符 是否 echo then 941    来源:    2025-05-15

在Linux的Shell脚本中,关系运算符主要用于数值和字符串的比较,不同运算符支持的类型有所不同。以下是详细分类:


1. 数值比较运算符

适用类型:整数(Shell默认不支持浮点数比较,需借助bcawk
常用运算符: - -eq:等于(Equal) bash if [ $a -eq $b ]; then echo "Equal"; fi - -ne:不等于(Not Equal) - -gt:大于(Greater Than) - -ge:大于或等于(Greater or Equal) - -lt:小于(Less Than) - -le:小于或等于(Less or Equal)

示例

if [ 10 -gt 5 ]; then
  echo "10 is greater than 5"
fi

2. 字符串比较运算符

适用类型:文本字符串
常用运算符: - ===:等于(注意等号两边需有空格) bash if [ "$str1" = "$str2" ]; then echo "Match"; fi - !=:不等于 - -z:检查字符串是否为空(Zero length) - -n:检查字符串是否非空(Non-zero length) - ><:按字典顺序比较(需用[[ ]]或在[ ]中转义)

示例

if [[ "apple" < "banana" ]]; then
  echo "apple comes before banana"
fi

3. 文件测试运算符

适用类型:文件/目录路径
常用运算符: - -e:文件是否存在(Exist) bash if [ -e "/path/to/file" ]; then echo "Exists"; fi - -f:是否为普通文件(File) - -d:是否为目录(Directory) - -r/-w/-x:是否可读/可写/可执行 - -s:文件大小是否大于零 - -nt/-ot:文件是否比另一文件新/旧(Newer/Older Than)

示例

if [ -d "/tmp" ]; then
  echo "/tmp is a directory"
fi

4. 逻辑运算符

适用类型:组合多个条件
常用运算符: - !:非(Not) - -a:与(And,在[ ]中使用) - -o:或(Or,在[ ]中使用) - &&||:逻辑与/或(需在[[ ]]或命令组合中使用)

示例

if [ $a -gt 5 -a $a -lt 10 ]; then
  echo "a is between 5 and 10"
fi

注意事项

  1. 空格要求:在[ ]内,运算符和操作数之间必须有空格(如[ "$a" = "$b" ])。
  2. 浮点数比较:需借助外部工具(如bc): bash if [ $(echo "1.2 > 1.1" | bc) -eq 1 ]; then echo "True"; fi
  3. 推荐使用[[ ]]:支持更自然的语法(如&&||)和通配符匹配(==支持通配符)。

完整示例

#!/bin/bash
num1=10
str="hello"
file="/etc/passwd"

if [ $num1 -ge 10 ] && [ -f "$file" ]; then
  echo "Number is 10+ and file exists."
fi

if [[ "$str" == h* ]]; then
  echo "String starts with 'h'."
fi

掌握这些运算符后,可以灵活处理Shell脚本中的条件判断需求。