2017-09-20 90 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