2017-09-20 88 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" )從公元前可執行的到來,注)

+0

啊!是的,工作。 非常感謝您的快速響應! – ramenloverli