2017-09-20 4 views
2

私はbashを使ってイメージングソフトウェアであるFSLのスクリプトを書いています。それはすべてのコマンドラインを介してだから、それはスクリプトに簡単です。Bash演算子:以前に計算された変数を分割して新しい変数に格納する

私は以前に計算された変数を二乗し、新しい変数として保存することができるように苦労しています:

varStdBase=$(fslstats ${varBase%.nii.gz}_MAX100.nii.gz -S) 
echo "Std Dev. is: "$varStdBase 

varS1=$(echo '$varStdBase^2'|bc) 
echo "variance is: "$varS1 

それは私が苦労することをvarS1を取得しています。私も試してみた

syntax error: invalid arithmetic operator (error token is ".886438") 

varS1=$(($varStdBase**2)) 

と:また

let varS1=$varStdBase**2 

varS1=$(echo $(($varStdBase**2))) 

そしてより多くの、すべての私は、エラーメッセージが出続けます役に立たなかった...

私は、bashがこの単純なタスクを実行したいという構文を理解しようと努力しています。

ありがとうございます!

+0

スクリプトの先頭に-x'設定 '入れbashがどのように変数置換を行っているかを見ることができます。 –

+0

ありがとう!これはトラブルシューティングで多くを助ける – ramenloverli

答えて

1

この:単一引用符は、変数の値が展開することはできませんので、

echo '$varStdBase^2'|bc 

はエラーになります。しかし、二重引用符意志を使用して:

echo "$varStdBase^2"|bc 

例えば

$ a=123 
$ echo "$a^2"|bc 
15129 

(エラーメッセージ構文エラー:無効な算術演算子(エラートークンが」0.886438" である)がBC実行から来て、音符)

+0

AH!はい、うまくいきました。 すばらしい返答をいただきありがとうございます! – ramenloverli

関連する問題