【发布时间】:2014-04-30 02:38:17
【问题描述】:
我正在尝试通过 awk 解决 bash 的浮点算术限制,但我遇到了一个语法错误,我在识别时遇到了问题。
declare -a mreal=()
for s in $(seq 0 $(( ${#mint_est[@]} - 1 )))
do
mreal=( "${mreal[@]}" "$(echo ${mreal_est[$s]} | \
awk -v int="${mint_est[$s]}" -v tot="$mtotal" \
'{printf("%s", $1 + (1.0 - int/$1)*tot)}')" )
done
这里mreal_est 和mint_est 是由4 个浮点值组成的数组,mtotal 是一个设置为浮点值的变量。来自 awk 的语法错误是:
awk: {printf("%s", $1 + (1.0 - int/$1)*tot)}
awk: ^ syntax error
awk: {printf("%s", $1 + (1.0 - int/$1)*tot)}
awk: ^ syntax error
awk: {printf("%s", $1 + (1.0 - int/$1)*tot)}
awk: ^ syntax error
对于循环中的每次迭代。我正在尝试根据 awk 的printf 语句中定义的算术来填充数组mreal。有什么想法可以纠正吗?
【问题讨论】:
-
如何改正?脚本是否在做一些不受欢迎的事情,如果是,是什么?发布一些小样本输入和预期输出。
-
@EdMorton 是的,循环中的每次迭代我都会遇到三个语法错误。我将编辑问题以突出显示错误。我期望
mreal数组根据 awk 的printf语句中定义的算术填充 4 个浮点值。 -
awk在浮点方面也不是特别出色,尽管它至少有一些功能,这使它在该领域领先于bash。您可能想查看bc...