如何在 Bash 中求幂

发布于 2024-09-26 11:23:56 字数 90 浏览 5 评论 0原文

我尝试

echo 10**2

打印 10**2。如何计算正确的结果,100?

I tried

echo 10**2

which prints 10**2. How to calculate the right result, 100?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓦然回首 2024-10-03 11:23:56

您可以使用 let 内置

let var=10**2   # sets var to 100.
echo $var       # prints 100

算术扩展

var=$((10**2))  # sets var to 100.

算术扩展的优点是允许您执行 shell 算术 然后只使用表达式而不将其存储在变量中:

echo $((10**2)) # prints 100.

对于大数字,您可能需要使用 外部命令 bc 的求幂运算符 as:

bash:$ echo 2^100 | bc
1267650600228229401496703205376

如果要将上述结果存储在变量中,可以使用 命令替换 通过 $() 语法:

var=$(echo 2^100 | bc)

或旧的反引号语法:

var=`echo 2^100 | bc`

请注意,命令替换与算术扩展不同:

$(( )) # arithmetic expansion
$( )   # command substitution

You can use the let builtin:

let var=10**2   # sets var to 100.
echo $var       # prints 100

or arithmetic expansion:

var=$((10**2))  # sets var to 100.

Arithmetic expansion has the advantage of allowing you to do shell arithmetic and then just use the expression without storing it in a variable:

echo $((10**2)) # prints 100.

For large numbers you might want to use the exponentiation operator of the external command bc as:

bash:$ echo 2^100 | bc
1267650600228229401496703205376

If you want to store the above result in a variable you can use command substitution either via the $() syntax:

var=$(echo 2^100 | bc)

or the older backtick syntax:

var=`echo 2^100 | bc`

Note that command substitution is not the same as arithmetic expansion:

$(( )) # arithmetic expansion
$( )   # command substitution
ら栖息 2024-10-03 11:23:56

多种方式:

Bash

echo $((10**2))

Awk

awk 'BEGIN{print 10^2}'  # POSIX standard
awk 'BEGIN{print 10**2}' # GNU awk extension

bc

echo '10 ^ 2' | bc

dc

dc -e '10 2 ^ p'

Various ways:

Bash

echo $((10**2))

Awk

awk 'BEGIN{print 10^2}'  # POSIX standard
awk 'BEGIN{print 10**2}' # GNU awk extension

bc

echo '10 ^ 2' | bc

dc

dc -e '10 2 ^ p'
北城孤痞 2024-10-03 11:23:56

实际上 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 a
command 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
()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文