Использование awk и if - PullRequest
       3

Использование awk и if

0 голосов
/ 19 декабря 2018

Мне нужно использовать команду AWK для сравнения двух чисел.если одно число больше другого, то запускает команду.Оболочка Unix очень урезана, но поддерживает awk.Я новичок в этом и мне нужна небольшая помощь.

Я пробовал несколько разных способов.Я не знаю, чего мне не хватает.

if (awk '{$1 > 80}' $OUTPUT3) echo 'FireActions' else fi

Так что, если число в переменной $ OUTPUT3 больше 80, запускаются действия.В противном случае игнорировать.

В настоящее время нет действий огонь.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

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
0 голосов
/ 19 декабря 2018

Попробуйте это:

$ 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")}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...