我正在使用bash为FSL(一种成像软件)编写脚本。这完全是通过命令行,因此编写脚本很简单。
我很难将以前计算的变量平方,然后将其存储为新变量:
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 :(得分:1)
此:
echo '$varStdBase^2'|bc
给出错误,因为单引号不允许扩展变量值。但是使用双引号将:
echo "$varStdBase^2"|bc
e.g。
$ a=123
$ echo "$a^2"|bc
15129
(错误消息语法错误:无效算术运算符(错误标记为“.886438”)来自bc可执行文件,请注意)