Bash:评估一个数学术语?
echo 3+3
如何在 Bash 中计算此类表达式(在本例中为 6)?
echo 3+3
How can I evaluate such expressions in Bash, in this case to 6?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
echo 3+3
如何在 Bash 中计算此类表达式(在本例中为 6)?
echo 3+3
How can I evaluate such expressions in Bash, in this case to 6?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
在这方面可能有用的一个用例是,如果您的操作数之一本身是 bash 命令,那么请尝试此操作。
echo $(( `date +%s\`+10 ))
甚至echo $(( `date +%s\`+(60*60) ))
就我而言,我试图分别比当前时间晚 10 秒和 1 小时获取 Unixtime。
One use case that might be useful in this regard is, if one of your operand itself is a bash command then try this.
echo $(( `date +%s\`+10 ))
or evenecho $(( `date +%s\`+(60*60) ))
In my case I was trying to get Unixtime 10 seconds and hour later than current time respectively.
我对数学处理的理解涉及浮点处理。
使用 bashj (https://sourceforge.net/projects/bashj/
>)您可以简单地使用或在 bashj 脚本中
这种 java 调用:注意有趣的地方速度:每次调用约 10 毫秒(答案由 JVM 服务器提供)。
另请注意,u.doubleEval(1/2) 将提供 0.5(浮点)而不是 0(整数)
My understanding of math processing involves floating point processing.
Using bashj (https://sourceforge.net/projects/bashj/) you can call a java method (with floating point processing, cos(), sin(), log(), exp()...) using simply
or in a bashj script, java calls of this kind:
Note the interesting speed : ~ 10 msec per call (the answer is provided by a JVM server).
Note also that u.doubleEval(1/2) will provide 0.5 (floating point) instead of 0 (integer)
expr
是标准方式,但它只处理整数。bash 有几个扩展,它们也只处理整数:
let
和(( ))
可用于赋值,例如对于浮点,您可以使用
bc
回声 3+3 |公元前
expr
is the standard way, but it only handles integers.bash has a couple of extensions, which only handle integers as well:
let
and(( ))
can be used to assign values, e.g.for floating point you can use
bc
echo 3+3 | bc
在 zsh/ksh 等 shell 中,您可以使用浮点数进行数学计算。如果您需要更多数学能力,请使用诸如 bc/awk/dc 之类的工具
,例如
查看您想要做什么
in shells such as zsh/ksh, you can use floats for maths. If you need more maths power, use tools like
bc/awk/dc
eg
looking at what you are trying to do
您可以使用 expr 命令:
要将结果存储到变量中,您可以执行以下操作:
或者
You can make use of the expr command as:
To store the result into a variable you can do:
or
有很多方法 - 最便携的是使用 expr 命令:
Lots of ways - most portable is to use the expr command:
我相信 ((3+3)) 方法是最快的,因为它是由 shell 而不是外部二进制文件解释的。
使用所有建议的方法对一个大循环进行计时,以获得最有效的效果。
I believe the ((3+3)) method is the most rapid as it's interpreted by the shell rather than an external binary.
time a large loop using all suggested methods for the most efficient.
感谢 Dennis,解决了 BC 使用的示例:
Solved thanks to Dennis, an example of BC-use: