Shell脚本:提升权力

Lin*_*nas 21 shell exponential

你如何将m提高到n的幂?我到处搜索过这个.我发现写m**n应该有效,但事实并非如此.我正在使用#!/ bin/sh

小智 23

使用$ n**$ m确实有效.也许您没有使用正确的语法来评估数学表达式.以下是我在Bash上获得结果的方法:

echo $(($n**$m))
Run Code Online (Sandbox Code Playgroud)

要么

echo $[$n**$m]
Run Code Online (Sandbox Code Playgroud)

这里的方括号并不像if语句中的测试赋值器那样你也可以使用它们而不用空格.我个人更喜欢使用圆括号的前一种语法.

  • 这是我正在寻找的答案,我会接受.谢谢@Gianni (3认同)
  • 请注意,这仅限于整数 - Bash无法处理非整数运算.另外,`echo $((n**n))`也可以工作 - 不需要`$`来扩展算术表达式中的变量,`((...))`. (2认同)

Bri*_*new 22

我会尝试计算器bc.有关更多详细信息和示例,请参阅http://www.basicallytech.com/blog/index.php?/archives/23-command-line-calculations-using-bc.html.

例如.

$ echo '6^6' | bc
Run Code Online (Sandbox Code Playgroud)

给力6提供6.


gle*_*man 7

使用bc是一个优雅的解决方案 如果你想在bash中这样做:

$ n=7
$ m=5

$ for ((i=1, pow=n; i<m; i++)); do ((pow *= n)); done
$ echo $pow
16807

$ echo "$n^$m" | bc  # just to verify the answer
16807
Run Code Online (Sandbox Code Playgroud)

  • 在bash中你也可以使用`$((7**5))`. (19认同)