我们想要计算2 ^(3.0)和2 ^( - 3.0).谢谢.
!/bin/bash
c=3.0
g=-3.0
c=$((2**$c)) #syntax error: invalid arithmetic operator (error token is ".0")
g=$((2**$g)) #syntax error: invalid arithmetic operator (error token is ".0")
echo "c=$c"
echo "g=$g"
Run Code Online (Sandbox Code Playgroud)
Bash的内置算法仅对整数运算,并且不允许**运算符使用负指数.
有许多其他工具可以执行浮点运算.例如:
$ c=3.0
$ g=-3.0
$ awk "BEGIN{print $c ** $c}"
27
$ awk "BEGIN{print $c ** $g}"
0.037037
$ perl -e "print $c ** $c, qq(\n), $c ** $g, qq(\n)"
27
0.037037037037037
Run Code Online (Sandbox Code Playgroud)
要将结果存储在变量中:
$ c=$(awk "BEGIN{print $c ** $c}")
$ echo $c
27
Run Code Online (Sandbox Code Playgroud)