Bash Awk部门获得了不同的结果

时间:2016-10-12 20:13:45

标签: linux bash awk

我正在尝试使用awk计算一些值。但是当用100分割并使用linux命令getconf CLK_TCK时,我得到不同的结果。

在我的情况下,命令总是返回100:

[centos@op5test1 ~]$ getconf CLK_TCK
100

现在我正在尝试使用上面的命令输出值计算一些值。

[centos@op5test1 ~]$ echo 26178 4861 | awk '{print ($1+$2)/$(getconf CLK_TCK)}'
1.18569

现在给出值100

[centos@op5test1 ~]$ echo 26178 4861 | awk '{print ($1+$2)/100}'
310.39

为什么我会得到不同的值?

1 个答案:

答案 0 :(得分:5)

从命令行传递getconf命令输出的正确方法:

echo 26178 4861 | awk -v val=$(getconf CLK_TCK) '{print ($1+$2)/val}'
310.39
直接在$(getconf CLK_TCK)命令中使用的

awk评估为$0 26178 4861,然后您就可以有效地执行此操作:

print ($1+$2)/$0

正在执行此算法:

(26178 + 4861)/26178 => 1.18569