Shell中的数值运算
  yh3Abo8H5Uxn 2023年11月19日 21 0
  • 使用expr、$[ ]、let等整数运算工具:进行四则运算及求模结果
  • 使用bc实现小数运算操作h
1 整数运算工具
1.1 使用expr命令

乘法操作应采用 \* 转义,避免被作为Shell通配符;参与运算的整数值与运算操作符之间需要以空格分开,引用变量时必须加$符号。

首先随便定义变量比如a=10,b=20,然后计算a与b的加减乘除和求模运算结果:

[root@nsd2309 opt]# a=10
[root@nsd2309 opt]# b=20
[root@nsd2309 opt]# expr $a + $b			
30
[root@nsd2309 opt]# expr $a - $b
-10
[root@nsd2309 opt]# expr $a \* $b						#乘法运算,加'\'转义符
200
[root@nsd2309 opt]# expr $a / $b
0
[root@nsd2309 opt]# expr $b / $a
2
[root@nsd2309 opt]# expr $a % $b						#求余
10
[root@nsd2309 opt]#
1.2 使用$[]或$(())表达式

乘法操作*无需转义,运算符两侧可以无空格;引用变量可省略 $ 符号;计算结果替换表达式本身,可结合echo命令输出。

对于变量a=100,b=10;分别计算a与b的加减乘除和求模运算结果:

[root@nsd2309 opt]# a=100
[root@nsd2309 opt]# b=10
[root@nsd2309 opt]# echo $[a+b]
110
[root@nsd2309 opt]# echo $[a-b]
90
[root@nsd2309 opt]# echo $[a*b]
1000
[root@nsd2309 opt]# echo $[a/b]
10
[root@nsd2309 opt]# echo $[a%b]
0
[root@nsd2309 opt]# echo $[5%3]
2
1.3 使用let命令

expr或[],(())方式只进行运算,并不会改变变量的值;

而let命令可以直接对变量值做运算再保存新的值。

常规写法         主流写法
let a=a+1       let a++         #变量a加1
let a=a-1       let a--         #变量a减1

let a=a+10      let a+=10       #变量a加10
let a=a-10      let a-=10       #变量a减10

let a=a*2       let a*=2        #变量a乘以2
let a=a/2       let a/=2        #变量a除以2

let a=a%3       let a%=3        #变量a除以3取余数
2 小数运算工具
2.1 bc交互式运算

先执行bc命令进入交互环境,然后再输入需要计算的表达式。

[root@nsd2309 opt]# bc
2.2 bc非交互式运算

将需要运算的表达式通过管道操作交给bc运算。

注意,小数位的长度可采用scale=N限制。

[root@nsd2309 opt]# echo "1.1+1" | bc
2.1
[root@nsd2309 opt]# echo "10/3" | bc
3
[root@nsd2309 opt]# echo "scale=2;10/3" | bc      #scale可以定义结果是小数点后多少位
3.33


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  pfl0iGEgXbv6   2023年11月19日   19   0   0 git用户名bc
  ETWZF7L1nsXD   2023年11月13日   246   0   0 DNSbc恶意软件
  Ogzy9ibNXM9w   2023年11月19日   18   0   0 gitnginxbc
  48fXx4UfWSFg   2023年12月06日   52   0   0 bcIPbundle
  eHipUjOuzYYH   2023年11月13日   16   0   0 参数设置bcmysql