我正在尝试使用awk计算一些值.但是当用100除以并使用linux命令getconf CLK_TCK时,我得到不同的结果.
在我的情况下,命令总是返回100:
[centos@op5test1 ~]$ getconf CLK_TCK
100
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用上面的命令输出值计算一些值.
[centos@op5test1 ~]$ echo 26178 4861 | awk '{print ($1+$2)/$(getconf CLK_TCK)}'
1.18569
Run Code Online (Sandbox Code Playgroud)
现在给出100的价值
[centos@op5test1 ~]$ echo 26178 4861 | awk '{print ($1+$2)/100}'
310.39
Run Code Online (Sandbox Code Playgroud)
为什么我会得到不同的值?
getconf从命令行传递命令输出的正确方法:
echo 26178 4861 | awk -v val=$(getconf CLK_TCK) '{print ($1+$2)/val}'
310.39
Run Code Online (Sandbox Code Playgroud)
$(getconf CLK_TCK)直接在使用时,awk命令被评估为$0是26178 4861,你是那么切实做好:
print ($1+$2)/$0
Run Code Online (Sandbox Code Playgroud)
正在执行此算术:
(26178 + 4861)/26178 => 1.18569
Run Code Online (Sandbox Code Playgroud)