2016-12-08 10 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 

です指数としてvarを渡します。

+1

に私のために仕事の両方が不足して

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

注意。 – Barmar

+1

なぜあなたは 'bc'を使う必要がありますか? 'bash'には指数演算子が組み込まれています:' answer = $((2 ** myvar)) ' – Barmar

+0

' myvar = 3;を実行しているログを表示してください。答え= $(echo "2^$ myvar" | bc);エコー "$答え"と8以外の結果を得ることです。ここでの主張は信じがたいです。デモでは、正確な再生器をテストしたことがありません。問題がまだ存在していることを確認する)、私はそれを信じることを拒否する。 –

答えて

3

これは、スクリプトが実際にた場合はなるだろう正確なエラーです:$は、彼らが最初$()

関連する問題