目录

  1. 引言
  2. 算术运算符
    • 2.1 加法
    • 2.2 减法
    • 2.3 乘法
    • 2.4 除法
    • 2.5 求余
    • 2.6 其他运算符
  3. 比较运算符
  4. 逻辑运算符
  5. 字符串运算符
  6. 文件测试运算符
  7. 总结
  8. 参考资料

1. 引言

在 Shell 脚本中,运算符是进行各种操作的基本工具。Shell 支持多种类型的运算符,包括算术运算符、比较运算符、逻辑运算符、字符串运算符和文件测试运算符等。掌握这些运算符的使用对于编写高效、灵活的 Shell 脚本非常重要。


2. 算术运算符

Shell 中的算术运算符主要用于执行数值计算,通常通过 $(( )) 进行表达式的计算。以下是常见的算术运算符:

2.1 加法

加法运算符用于两个数字的相加。

a=5
b=3
result=$((a + b))
echo $result  # 输出 8

2.2 减法

减法运算符用于从一个数中减去另一个数。

a=5
b=3
result=$((a - b))
echo $result  # 输出 2

2.3 乘法

乘法运算符用于两个数字相乘。

a=5
b=3
result=$((a * b))
echo $result  # 输出 15

2.4 除法

除法运算符用于将一个数除以另一个数。

a=5
b=3
result=$((a / b))
echo $result  # 输出 1 (取整)

2.5 求余

求余运算符用于计算两个数的余数。

a=5
b=3
result=$((a % b))
echo $result  # 输出 2

2.6 其他运算符

  • ++:递增运算符
  • --:递减运算符
a=5
((a++))
echo $a  # 输出 6

b=5
((b--))
echo $b  # 输出 4


3. 比较运算符

Shell 提供了多种比较运算符用于比较数字和字符串。以下是常见的数字比较运算符:

数字比较运算符

  • -eq:等于
  • -ne:不等于
  • -lt:小于
  • -le:小于等于
  • -gt:大于
  • -ge:大于等于
a=5
b=3

if [ $a -eq $b ]; then
  echo "a 等于 b"
else
  echo "a 不等于 b"
fi

字符串比较运算符

  • =:字符串相等
  • !=:字符串不等
  • <:按字典序比较(在 [[ ]] 中使用)
  • >:按字典序比较(在 [[ ]] 中使用)
str1="hello"
str2="world"

if [ "$str1" = "$str2" ]; then
  echo "字符串相等"
else
  echo "字符串不相等"
fi


4. 逻辑运算符

Shell 支持多种逻辑运算符,用于处理条件判断中的逻辑关系:

  • &&:逻辑与(AND)
  • ||:逻辑或(OR)
  • !:逻辑非(NOT)

示例:

a=5
b=3

# AND 运算符
if [ $a -gt $b ] && [ $b -lt 10 ]; then
  echo "a 大于 b 且 b 小于 10"
fi

# OR 运算符
if [ $a -gt $b ] || [ $b -gt 10 ]; then
  echo "a 大于 b 或者 b 大于 10"
fi

# NOT 运算符
if ! [ $a -eq $b ]; then
  echo "a 不等于 b"
fi


5. 字符串运算符

Shell 中的字符串运算符用于对字符串进行操作。

  • -z:检查字符串是否为空
  • -n:检查字符串是否非空
  • =:检查两个字符串是否相等
  • !=:检查两个字符串是否不相等
  • >:按字典序检查一个字符串是否大于另一个字符串
  • <:按字典序检查一个字符串是否小于另一个字符串

示例:

str1="hello"
str2="world"

if [ -z "$str1" ]; then
  echo "str1 是空字符串"
fi

if [ "$str1" = "$str2" ]; then
  echo "字符串相等"
else
  echo "字符串不相等"
fi


6. 文件测试运算符

文件测试运算符用于检查文件的各种属性,如是否存在、是否为目录、是否为文件等。

常见文件测试运算符:

  • -e:检查文件是否存在
  • -d:检查文件是否为目录
  • -f:检查文件是否为普通文件
  • -r:检查文件是否可读
  • -w:检查文件是否可写
  • -x:检查文件是否可执行

示例:

file="test.txt"

if [ -e "$file" ]; then
  echo "$file 存在"
else
  echo "$file 不存在"
fi

if [ -d "$file" ]; then
  echo "$file 是一个目录"
else
  echo "$file 不是一个目录"
fi


7. 总结

Shell 中的基本运算符为我们提供了丰富的功能,可以进行算术运算、比较、逻辑判断、字符串操作以及文件测试等。掌握这些运算符的使用,有助于编写功能强大的 Shell 脚本,处理各种任务和条件。理解这些运算符的作用和使用方法,是学习 Shell 编程的关键。


8. 参考资料

  1. Bash Manual: Test Constructs
  2. Shell Scripting: Basic Operators
  3. Linux Shell Scripting Tutorial