2010-10-08 44 views

回答

19

你可以这样做:

let var=10**2 # sets var to 100. 

,甚至更好,推荐的方式:

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

如果你只想打印表达式的结果,你可以这样做:

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

对于大数字你可能想要使用bc的指数运算符作为:

bash:$ echo 2^100 | bc 
1267650600228229401496703205376 

如果你想把上述的结果存储在一个变量,你可以再次使用$(())语法为:

var=$((echo 2^100 | bc)) 
+0

代替$((...))的'执行命令行的结果'这是也可以使用'$ [...]'。我发现后者在视觉上更具吸引力,但这只是我的口味。不过,不知道两者是否有区别。看起来他们表现得一样。 – DarkDust 2010-10-08 08:19:25

+0

Alberto:所有这个括号,let和$都是需要的,因为bash作为一个简单的命令行解释程序,假设所有内容都是字符串,并且应该这样处理,除非明确指出,否则它会更好。 Saludos! – slezica 2010-10-08 08:20:51

4

各种方式

猛砸

x=2 
echo $((x**2)) 

awk中

awk 'BEGIN{print 2**2}' 

BC

echo "2^2" |bc 

DC

dc -e '2 2^p' 
0

其实var=$((echo 2^100 | bc))不起作用 - bash的是试图做内部(())数学。但 命令行序列是有代替它创建了一个错误

var=$(echo 2^100 | bc)作品的价值在里面 ()