【问题标题】:Bash Operators: Squaring a previously calculated variable, then storing it in a new variableBash 运算符:对先前计算的变量进行平方,然后将其存储在新变量中
【发布时间】:2018-03-01 20:07:06
【问题描述】:

我正在使用 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 想要完成这个简单任务的语法。

谢谢!

【问题讨论】:

  • set -x 放在脚本的顶部,这样你就可以看到 bash 是如何进行变量替换的。
  • 谢谢!这对解决问题有很大帮助

标签: bash variables store operator-keyword exponent


【解决方案1】:

这个:

echo '$varStdBase^2'|bc

给出错误,因为单引号不允许扩展变量值。但是使用双引号

echo "$varStdBase^2"|bc

例如

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

(错误消息语法错误:无效算术运算符(错误标记为“.886438”)来自 bc 可执行文件,请注意)

【讨论】:

  • 啊!是的,这有效。非常感谢您的快速响应!
猜你喜欢
  • 2012-12-24
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
相关资源
最近更新 更多