2016-12-08 31 views
0

時,該工作巴什 - 變量指數提高功率

answer=$(echo "2^3" | bc) 
$ 8 

然而,這並不。以下是完整的腳本:

#!/bin/bash 
myvar=$(echo "4-1" | bc)  
answer=$(echo "2^$myvar" | bc) 
echo $answer 

當我跑這跟「設置-x」,這是輸出

./test.sh: line 3: syntax error near unexpected token '|' 
./test.sh: line 3: 'myvar=(echo "4-1" | bc) 
++ echo '2^' 
++ bc 
(standard_in) 2: syntax error 
+ answer= 
+ echo 

我想堅持BC,但無法弄清楚如何傳遞一個var作爲指數。

+1

缺少他們都爲我工作。 – Barmar

+1

爲什麼你需要使用'bc'? 'bash'有一個內置的指數運算符:'answer = $((2 ** myvar))' – Barmar

+0

請顯示運行myvar = 3的日誌。 answer = $(echo「2^$ myvar」| bc); echo「$ answer」'並得到8以外的結果。也就是說 - 這裏的主張是很難相信的,沒有證明你測試了你的確切的重現器(而不是從你的真實代碼中得到它)檢查問題仍然存在),我拒絕相信它。 –

回答

3

這是確切的錯誤,如果你的腳本是實際上,你會得到:

#!/bin/bash 
myvar=(echo "4-1" | bc)  
answer=$(echo "2^$myvar" | bc) 
echo $answer 

注意$第一$()