SHELL四则运算和比较


在Shell脚本中,四则运算和比较是常见的操作。不过,需要注意的是,原生的Bash并不直接支持浮点数运算,但对于整数运算和比较提供了很好的支持。

### 四则运算

对于整数,你可以使用`$((expression))`进行算术运算。


#!/bin/bash

# 加法
result_add=$((10 + 5))
echo "加法结果: $result_add"

# 减法
result_sub=$((10 - 5))
echo "减法结果: $result_sub"

# 乘法
result_mul=$((10 * 5))
echo "乘法结果: $result_mul"

# 除法(注意:结果也是整数)
result_div=$((10 / 5))
echo "除法结果: $result_div"

# 取模(求余数)
result_mod=$((10 % 3))
echo "取模结果: $result_mod"

对于浮点数运算,你可能需要使用外部程序如`bc`或`awk`。

### 比较

在Shell中,你可以使用`[ expression ]`(注意`[`和表达式之间有空格)或`[[ expression ]]`(更强大的版本,支持模式匹配等)来进行比较。


#!/bin/bash

a=10
b=20

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

# 不等于
if [ "$a" -ne "$b" ]; then
    echo "$a 不等于 $b"
fi

# 大于
if [ "$a" -gt "$b" ]; then
    echo "$a 大于 $b"
else
    echo "$a 不大于 $b"
fi

# 小于
if [ "$a" -lt "$b" ]; then
    echo "$a 小于 $b"
fi

# 大于等于
if [ "$a" -ge "$((b-1))" ]; then
    echo "$a 大于等于 $b 减 1"
fi

# 小于等于
if [ "$a" -le "$b" ]; then
    echo "$a 小于等于 $b"
fi

# 字符串比较(使用 = 或 !=)
str1="hello"
str2="world"
if [ "$str1" = "hello" ]; then
    echo "$str1 是 hello"
fi

if [ "$str1" != "$str2" ]; then
    echo "$str1 不等于 $str2"
fi

请注意,`-eq`、`-ne`、`-gt`、`-lt`、`-ge`、`-le`等比较操作符仅适用于整数比较。对于字符串比较,应使用`=`或`!=`,并且要注意将变量值用双引号包围,以避免因变量未定义或为空而导致的错误。