如何在 Bash 中求幂
我尝试
echo 10**2
打印 10**2
。如何计算正确的结果,100?
I tried
echo 10**2
which prints 10**2
. How to calculate the right result, 100?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用
let
内置:或算术扩展:
算术扩展的优点是允许您执行 shell 算术 然后只使用表达式而不将其存储在变量中:
对于大数字,您可能需要使用 外部命令
bc
的求幂运算符 as:如果要将上述结果存储在变量中,可以使用 命令替换 通过
$()
语法:或旧的反引号语法:
请注意,命令替换与算术扩展不同:
You can use the
let
builtin:or arithmetic expansion:
Arithmetic expansion has the advantage of allowing you to do shell arithmetic and then just use the expression without storing it in a variable:
For large numbers you might want to use the exponentiation operator of the external command
bc
as:If you want to store the above result in a variable you can use command substitution either via the
$()
syntax:or the older backtick syntax:
Note that command substitution is not the same as arithmetic expansion:
多种方式:
Bash
Awk
bc
dc
Various ways:
Bash
Awk
bc
dc
实际上
var=$((echo 2^100 | bc))
不起作用 - bash 试图在(())
内进行数学运算。但一个相反,命令行序列存在,因此它会创建一个错误
var=$(echo 2^100 | bc)
,因为该值是内部执行的命令行的结果<代码>()
Actually
var=$((echo 2^100 | bc))
doesn't work - bash is trying to do math inside(())
. But acommand line sequence is there instead so it creates an error
var=$(echo 2^100 | bc)
works as the value is the result of the command line executing inside()