bash shell基本语法之算术运算

本文详细介绍了在Shell脚本中如何进行数值运算,包括let、$(())和expr三种方法的使用,以及它们的特点和限制。此外,还提到了如何处理浮点数运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

shell中变量的操作都是按照字符串处理的,如果直接对变量用+、-、*、/等符号运算,结果往往是不预期的,如下:

#! /bin/bash

v1=10
v2=20

echo $v1+$v2
echo $v1-$v2
echo $v1*$v2
echo $v1/$v2

执行结果:

在bash shell中对于数值运算有多种方式,本文简单说明3种:let、$(())、expr

算术运算

let

let只适合整形运算,如果是浮点数会报错,整数除法的话是取模运算;let的使用方式有点类c,并且也支持++,--等运算符(包括逗号)下面给个示例,不写测试代码了,直接在命令行窗口执行,这样看的也比较清楚:

$(())

$((算术表达式)),实际使用((算术表达式)),如:((1+2))便会计算1+2,可是如果前面不加$符号,计算的结果没法赋值给别的变量,这也是没有意义,所以这里的写法就认为$((算术表达式))。

变量=$((算术表达式))可以等同于let 变量算术表达式,如sum=$((1+2))等同于let sum=1+2。即$(())可以代替let命令。同样,它也只能进行整数计算,不能计算浮点数,示例如下:

看图片的最后几行,和let的写法毕竟有点不一样,所以要注意++、--运算符的前后位置(和c语言一样),以及根据自己的使用目的来达到预期效果。

expr

expr命令的功能比较复杂,这个是实实在在的命令,可以计算整数,截取字符串,计算字符串长度,全部用法建议查看帮助文件,下面给个示例,注意运算数和运算符之前的空格,否则就作为一个字符串处理了,因此不支持++、--等运算符:

#! /bin/bash

#计算1+2
echo `expr 1 + 2`

#没有空格当作字符串
echo `expr 1+2`

#计算字符串长度
echo `expr length "abcd"`

#不支持浮点数,报错
echo `expr 3.5 * 2`

执行结果,如下:

p.s. 如果要做浮点数运算或者开方求幂等高端操作,可以考虑用bc命令,如下:

其它用法,如有需要可以查看帮助文档。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不识君的荒漠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值