如何在bash中进行取幂

use*_*553 10 syntax bash operators

我试试

echo 10**2 
Run Code Online (Sandbox Code Playgroud)

它打印10**2.如何使它工作?

cod*_*ict 21

你可以做:

let var=10**2   # sets var to 100.
Run Code Online (Sandbox Code Playgroud)

甚至更好和推荐的方式:

var=$((10**2))  # sets var to 100.
Run Code Online (Sandbox Code Playgroud)

如果您只想打印表达式结果,您可以执行以下操作:

echo $((10**2)) # prints 100.
Run Code Online (Sandbox Code Playgroud)

对于大数字,您可能希望使用以下指数运算符bc:

bash:$ echo 2^100 | bc
1267650600228229401496703205376
Run Code Online (Sandbox Code Playgroud)

如果要将上述结果存储在变量中,可以再次使用以下$(())语法:

 var=$((echo 2^100 | bc))  
Run Code Online (Sandbox Code Playgroud)

  • 除了 `$(( ... ))`,也可以使用 `$[ ... ]`。我发现后者在视觉上更有吸引力,但这只是我的口味。不过不知道两者有没有区别。看来他们的行为是一样的。 (3认同)

gho*_*g74 6

各种方式:

重击

echo $((10**2))
Run Code Online (Sandbox Code Playgroud)

awk

awk 'BEGIN{print 10^2}'  # POSIX standard
awk 'BEGIN{print 10**2}' # GNU awk extension
Run Code Online (Sandbox Code Playgroud)

公元前

echo '10 ^ 2' | bc
Run Code Online (Sandbox Code Playgroud)

直流电

dc -e '10 2 ^ p'
Run Code Online (Sandbox Code Playgroud)