我正在使用这个命令
num1=2.2
num2=4.5
result=$(awk 'BEGIN{print ($num2>$num1)?1:0}')
这始终返回 0。无论是 num2>numl 还是 num1>num2 但是当我这样输入实际数字时
result=$(awk 'BEGIN{print (4.5>2.2)?1:0}')
我得到的返回值为 1。这是正确的。
我该怎么做才能让这项工作成功?
最佳答案
使用变量时失败的原因是单引号括起来的 awk
脚本由 awk
计算,而不是 bash
:所以如果您想将正在使用的变量从 bash
传递到 awk
,则必须使用 -v
选项将其指定为如下:
num1=2.2
num2=4.5
result=$(awk -v n1=$num1 -v n2=$num2 'BEGIN{print (n2>n1)?1:0}')
注意,awk
脚本中使用的程序变量不得以 $
为前缀
关于awk 大于小于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480155/