开发工具

Shell 运算符

在 Shell 脚本中,运算符用于执行数学计算、字符串比较、文件测试等操作。Shell 脚本支持多种类型的运算符,包括但不限于算术运算符、比较运算符、逻辑运算符和文件测试运算符。以下是一些常见的 Shell 运算符及其用法示例:

1. 算术运算符

Shell 脚本中的算术运算符用于执行基本的数学运算。注意,算术运算通常在双括号 (( )) 或 let 命令中进行,或者通过 $(( )) 进行表达式求值。

# 使用双括号
a=10
b=20
((result = a + b))
echo $result  # 输出 30

# 使用 let 命令
let result=a+b
echo $result  # 输出 30

# 使用 $(( ))
result=$((a + b))
echo $result  # 输出 30

常见的算术运算符包括:

+ 加法

- 减法

* 乘法

/ 除法

% 取余

** 幂运算(在某些 Shell 中需要启用扩展)


2. 比较运算符

比较运算符用于比较两个值的大小或是否相等。比较结果通常用于条件判断。

a=10
b=20

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

常见的比较运算符包括:

-eq 等于

-ne 不等于

-lt 小于

-le 小于等于

-gt 大于

-ge 大于等于

对于字符串比较,使用 =(等于)和 !=(不等于),注意字符串比较时 [ 两边需要有空格。


3. 逻辑运算符

逻辑运算符用于组合多个条件表达式,实现复杂的逻辑判断。

a=10
b=20

if [ $a -lt $b ] && [ $a -gt 5 ]; then
    echo "a 小于 b 且大于 5"
fi

常见的逻辑运算符包括:

&& 逻辑与

|| 逻辑或

! 逻辑非


4. 文件测试运算符

文件测试运算符用于检查文件的类型或状态。

file="/path/to/file.txt"

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

常见的文件测试运算符包括:

-e 文件存在

-f 常规文件

-d 目录

-r 可读

-w 可写

-x 可执行

-s 文件大小非零


注意事项

1、算术运算和比较运算中的变量引用不要加 $ 符号在 [[ ]] 或 (( )) 中(但在 [ 中需要)。

2、字符串比较时,[ 两边需要有空格,且 = 两边不能有空格。

3、文件测试运算符通常与 [ 或 [[ ]] 一起使用。

4、在某些情况下,为了兼容不同的 Shell,可能需要启用特定的扩展(如 Bash 的 shopt -s extglob)。

通过合理使用这些运算符,Shell 脚本可以执行复杂的逻辑判断和数据处理任务。