Bash和awk做分工

时间:2014-07-09 16:25:17

标签: bash awk

我试图在两个整数之间进行简单的除法计算,这将导致浮点数。我不想用bc。这种方法适用于我的不同目的,语法略有不同,但我不太清楚我在哪里弄乱。我很肯定变量被正确分配,但是一旦我尝试进行除法,我就会出错,并且实际上没有任何内容被分配给变量。有人可以帮忙吗?

提前致谢!

rate=`awk '{ shared = "'"${tempRatioArray[0]}"'"; total = "'"${tempRatioArray[1]}"'";\
        printf "%3.0f\t", shared/total }' | awk '{print}'` 

2 个答案:

答案 0 :(得分:2)

这不是在awk中使用shell变量的正确方法,并且您不需要2个awk命令。

像这样使用:

rate=$(awk -v shared="${tempRatioArray[0]}" -v total="${tempRatioArray[1]}" 'BEGIN {
    printf "%.3f", (shared/total) }')

答案 1 :(得分:2)

您可以使用bc

bc -l <<<"scale=3; 5/2"
2.500

适应您的代码:

bc -l <<< "scale=3; ${tempRatioArray[0]} / ${tempRatioArray[1]}"