我正在尝试通过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的mreal
语句中定义的算法,使用浮点值填充数组printf
。有什么想法可以纠正吗?
答案 0 :(得分:4)
int()
是一个awk函数,您不能将int
用作变量名:
$ gawk -v int=7 'BEGIN{print int}'
gawk: cmd. line:1: BEGIN{print int}
gawk: cmd. line:1: ^ parse error
$ gawk -v xint=7 'BEGIN{print xint}'
7