在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`等比较操作符仅适用于整数比较。对于字符串比较,应使用`=`或`!=`,并且要注意将变量值用双引号包围,以避免因变量未定义或为空而导致的错误。