Bash运算符:对先前计算的变量进行平方,然后将其存储在新变量中
问题描述:
我正在使用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想要做这个简单任务的语法。
谢谢!
答
此:
echo '$varStdBase^2'|bc
给出了一个错误,因为单引号不允许变量值进行扩展。然而,使用双引号将:
echo "$varStdBase^2"|bc
例如
$ a=123
$ echo "$a^2"|bc
15129
(错误信息语法错误:无效的算术运算符(错误标记为” 0.886438" )从公元前可执行的到来,注)
+0
啊!是的,工作。 非常感谢您的快速响应! – ramenloverli
认沽'在脚本的顶部设置-x'所以你可以看到bash是如何进行变量替换的。 –
谢谢!这帮助了很多拍摄难题 – ramenloverli