echo 40% |awk '+$0>39'
+$0 ==> 0+$0 ==> $0+0
40% + 0 这是要做一个加法运算,加法嘛,两边肯定都得是数值, 于是在计算之前,程序会把参与运算的字符串转换成数值来处理。
按什么规则来转换,是问题所在:为什么 40% 会被 转换成 40
目测可以这么理解:
从左到右 取数字: 遇到非数字时,转换结束。
如: 40% 从左到右 取出40 后 %不是数字了,转换就结束了,取值 40.
再如 a40% 从左到右 第一个就是 a , 转换结束,后面的都直接忽略, 取值 0.
例子:
只打印磁盘使用率高于80%:
df -h |awk '+$5>80'