Shell 脚本运算符详解(一):算术运算符全解析

在 Shell 脚本编程中,运算符是我们进行数据处理、判断条件、实现逻辑控制的基础。特别是算术运算符,几乎每个脚本都会用到它们来完成数字计算。

本篇文章将带你全面认识 Shell 中常用的算术运算符,讲解它们的用法、示例及注意点,帮助你轻松掌握 Shell 的算术运算


目录

  1. 什么是算术运算符
  2. Shell 支持的算术运算符
  3. let、(( )) 和 $(( )) 用法和区别
  4. 算术运算符的使用方式
  5. 常用算术运算符详解
  6. 结合实例演示算术运算
  7. 总结

1. 什么是算术运算符?

算术运算符是对数字进行计算的符号或符号组合,比如加法+、减法-、乘法*等。它们用来实现加减乘除、求余、变量自增等基本运算。

在 Shell 脚本中,我们经常需要对变量进行算术操作,例如统计、计数、判断等,算术运算符就是完成这些工作的工具。常用的算术运算符可以与 let(( )) $(( )) 结构一起使用。

2. Shell 支持的算术运算符

常见的算术运算符有:

运算符作用说明
+加法两数相加
-减法两数相减
*乘法两数相乘
/除法两数相除,结果为整数(取整)
%取余两数相除的余数
++自增变量值加1
--自减变量值减1

3. let、(( )) 和 $(( )) 用法和区别

特性/命令let$(( ))(( ))
主要用途执行算术运算并赋值执行算术运算并返回结果执行算术运算及条件判断
是否需要引号表达式有空格时需要不需要不需要
是否自动解析变量否(变量不需加 $)否(变量不需加 $)
直接输出结果不支持支持不支持
常见用法单独赋值或修改变量获取计算结果或嵌入其他命令用于条件判断和循环

4. 算术运算符的使用方式

Shell 中执行算术运算主要有以下几种常见方法:

方法一:使用 let 命令

let result=3+5
echo $result

let 用于执行算术表达式,适合简单的计算。

方法二:使用双括号 (( ))

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

# 也可以直接打印
echo $((3 + 5))

(( )) 是 Shell 中的算术扩展,功能强大且书写简洁,是推荐使用的算术计算方式

方法三:使用 expr 命令

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

expr 是一个外部命令,支持基本算术运算,但需要注意运算符和参数间要有空格。

5. 常用算术运算符详解

下面详细讲解每个算术运算符的用法及示例。

5.1 加法(+

作用:两个数相加。

a=10
b=5
sum=$((a + b))
echo "加法结果:$sum"

5.2 减法(-

作用:两个数相减。

a=10
b=5
diff=$((a - b))
echo "减法结果:$diff"  # 输出:5

5.3 乘法(*

作用:两个数相乘。

a=10
b=5
prod=$((a * b))
echo "乘法结果:$prod" 

注意: * 在命令行中是通配符,需要用双括号或转义。

5.4 除法(/

作用:两个数相除,结果取整数(向下取整)。

a=10
b=3
quot=$((a / b))
echo "除法结果:$quot"

5.5 取余(%

作用:求两个数相除的余数。

a=10
b=3
mod=$((a % b))
echo "取余结果:$mod"

5.6 自增(++

作用:变量的值加1。

a=5
((a++))
echo "自增后:$a" 

5.7 自减(--

作用:变量的值减1。

a=5
((a--))
echo "自减后:$a" 

6. 算术运算脚本示例

下面用一个简单示例,结合多个算术运算符计算并输出结果。

#!/bin/bash

echo "=== 使用 let ==="
a=10
b=3
# 加法
let "add = a + b"
echo "let: a + b = $add"
# 减法
let "sub = a - b"
echo "let: a - b = $sub"
# 乘法
let "mul = a * b"
echo "let: a * b = $mul"
# 除法(整数)
let "div = a / b"
echo "let: a / b = $div"
# 取余
let "mod = a % b"
echo "let: a % b = $mod"
# 自增
let "a++"
echo "let: a++ => a = $a"
# 自减
let "b--"
echo "let: b-- => b = $b"
echo -e "\n=== 使用 (( )) ==="
x=8
y=3
# 加法
((x_add = x + y))
echo "(( )): x + y = $x_add"
# 减法
((x_sub = x - y))
echo "(( )): x - y = $x_sub"
# 乘法
((x_mul = x * y))
echo "(( )): x * y = $x_mul"
# 除法
((x_div = x / y))
echo "(( )): x / y = $x_div"
# 取余
((x_mod = x % y))
echo "(( )): x % y = $x_mod"
# 自增
((x++))
echo "(( )): x++ => x = $x"
# 自减
((y--))
echo "(( )): y-- => y = $y"
echo -e "\n=== 使用 \$(( )) ==="
m=7
n=2
# 加法
add_result=$((m + n))
echo "\$(( )): m + n = $add_result"
# 减法
sub_result=$((m - n))
echo "\$(( )): m - n = $sub_result"
# 乘法
mul_result=$((m * n))
echo "\$(( )): m * n = $mul_result"
# 除法
div_result=$((m / n))
echo "\$(( )): m / n = $div_result"
# 取余
mod_result=$((m % n))
echo "\$(( )): m % n = $mod_result"
# 自增
m=$((m + 1))  # 或者使用 ((m++))
echo "\$(( )): m++ => m = $m"
# 自减
n=$((n - 1))  # 或者使用 ((n--))
echo "\$(( )): n-- => n = $n"
echo -e "\n=== 输入测试 ==="
read -p "请输入一个数字,我将为你计算它的平方和立方:" input_num
square=$((input_num ** 2))
cube=$((input_num ** 3))
echo "你输入的数字是:$input_num"
echo "它的平方是:$square"
echo "它的立方是:$cube"
echo -e "脚本执行完毕。"

练习完这个脚本以后,来,结合上一篇文章 read 键盘读取输入,把a、b、x、y、m、n换成参数。

7. 总结

  • Shell 中算术运算符非常丰富,包括加减乘除、取余、自增自减等。
  • 推荐使用 (( )) 结构来做算术运算,语法简洁且效率高。
  • 除法结果为整数,切记 Shell 不支持浮点运算(可用 bcawk 工具实现浮点计算)。
  • 记得运算符和变量使用时,避免通配符影响,比如乘号 * 常用双括号包裹。

还有几种运算,一般情况下,也用不到,可以作为了解
幂运算(**)左移(<<)右移(>>)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全日记pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值