2010-10-08 38 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)作品的價值在裏面 ()