我需要使用AWK命令对2个数字进行比较。如果一个数字高一个,另一个则触发命令。 Unix shell非常精简,但确实支持awk。我对此很陌生,需要一点帮助。
我尝试了许多不同的方法。我不知道我在想什么。
if (awk '{$1 > 80}' $OUTPUT3) echo 'FireActions' else fi
因此,如果变量$ OUTPUT3中的数字大于80,则触发操作。否则请忽略。
目前没有动作。
答案 0 :(得分:1)
awk
对于这种特殊情况有点尴尬。您需要返回0表示成功,而返回非零则表示失败,这将反转布尔值0 == false和1 == true。但这还不错:
if awk 'END{ exit !($1 > 80)}' $OUTPUT3; then echo 'FireActions'; else ...; fi
以上假设$ OUTPUT3包含输入文件的名称,该名称似乎不是您想要的。如果只想知道$ OUTPUT3是否大于80,则awk是错误的工具。你想要
if test "$OUTPUT3" -gt 80; then ...; fi
如果出于某些原因您确实想使用awk,则可以执行以下操作:
if echo $OUTPUT3 | awk 'END{ exit !($1 > 80)}'; then echo 'FireActions'; fi
或
if awk 'END{ exit !(c > 80)}' c="$OUTPUT3" < /dev/null ; then echo 'FireActions'; fi
答案 1 :(得分:0)
尝试一下:
$ OUTPUT3=80
$ awk -v val="$OUTPUT3" 'BEGIN{if (val>80) print "FireActions"}'
$ OUTPUT3=81
$ awk -v val="$OUTPUT3" 'BEGIN{if (val>80) print "FireActions"}'
FireActions
要运行“ FireActions”之类的命令,请执行以下操作:
awk -v val="$OUTPUT3" 'BEGIN{if (val>80) system("FireActions")}'