gpt4 book ai didi

linux - bc 不通过​​脚本执行

转载 作者:可可西里 更新时间:2023-11-01 11:46:10 27 4
gpt4 key购买 nike

您好,我有一个脚本,用于计算从服务器返回的一组值的标准偏差。

我可以轻松检索命令并使用命令构建有效的字符串。

bc <<< "scale=10; sqrt((0+((782636-782030)^2)+((781460-782030)^2)+((782492-782030)^2)+((781704-782030)^2)+((781860-782030)^2))/5)"

我通过遍历数组并将其附加到字符串来创建此命令,就像这样。

CMD='bc <<< "scale=10; sqrt((0'
for i in "${MEMORY[@]}"; do
CMD=$CMD'+(('$i'-'$MEAN')^2)'
done;
CMD=$CMD')/5)"'

完成此操作后,我会尝试将命令字符串执行到变量中

SD=`$CMD`   
echo $SD

但是我得到了输出

File <<< is unavailable.

有什么想法吗?

最佳答案

<<<需要由 shell 解析,这发生在参数扩展之前。当你尝试执行时

SD=`$CMD`

$CMD 中的字符串没有被重新解析,所以 <<<被视为文字字符串并作为参数传递给 bc .你需要类似的东西

BC_EXPRESSION='scale=10; sqrt((0'
for i in "${MEMORY[@]}"; do
BC_EXPRESSION+="+(($i-$MEAN)^2)"
done
BC_EXPRESSION+=')/5)'

SD=$( bc <<< "$BC_EXPRESSION" )

关于linux - bc 不通过​​脚本执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23294427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com