我正在尝试使用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
为什么我会得到不同的值?
答案 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