shell中的数学运算
shell中要进行数学运算通常有3中方法:
expr命令
比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如:expr \* 5,这样就会使得表达式很难看
$[expression]命令
使用$[expression]命令也可以进行数学计算,并且比expr方便的是*和括号可以不用转义,比如仍然计算(2 + 3) * 5,可以直接写为:
1 | result=$[ (2 + 3) * 5 ] |
上面两种操作符expr命令和$[expression]都只能处理整数,而无法处理浮点数,要进行浮点数运算,就必须借助shell当中的bc命令。
bc命令
对于简单的运算,可以使用如下形式:
result=`echo "options;expression" | bc`
其中options通常都是使用bc里面的变量scale设置浮点数精度(scale默认为0),expression为算数表达式,比如计算3.6 * 7.2,可以写为:
1 | result=` echo "scale=3;3.6 * 7.2" | bc ` |
这种形式对于简单的计算很方便,但是如果涉及到复杂的,可以使用下面的形式:
result=`bc << EOF
options
expression
EOF`
其中<<是内联输入重定向运算符,其后跟的是结束标志(可以是任何字符或者字符串),上面的表达式表示给bc命令提供输入,直到遇到EOF为止;options和expression同上。
比如,仍然是计算3.6 * 7.2,可以写为:
1 2 3 4 5 6 | result=` bc << EOF scale = 3 var1 = 3.6 var2 = 7.2 var1 * var2 EOF` |
使用bc命令需要注意两点:
1) bc命令里面可以自己定义变量,如上面的var1和var2,但是只能在bc命令里面使用,当bc命令结束时,这些变量无法访问,同时在bc里面访问这些变量无需带$符
2)bc命令里面可以访问shell中的变量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2013-07-12 如何快速的搜索自己想要的资料