bash shell基本语法之算术运算

前言

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命令,如下:

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

发布了136 篇原创文章 · 获赞 81 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/x763795151/article/details/97701334
今日推荐