Сравнение awk на Ubuntu

Сравнение awk на Ubuntu

Я пытаюсь написать скрипт, который проверяет использование диска удаленными клиентами. В скрипте есть фильтр для осмысленного вывода:

...

ssh server "sudo df -Ph 2>/dev/null \
| tail -n +2 \
| grep -v tmpfs \
| grep G| sed s/%//g \
| sed s/G//g \
| awk '{ if($5 < 20) print $0;}'" #to get only disks that the usage is under %20

...

Эта командная строка успешно работает на машинах CentOS/RHEL, но в Ubuntu возникает ошибка команды awk, как показано ниже:

awk: cmd. line:1: { if( < 20) print bash;}
awk: cmd. line:1:       ^ syntax error

Как сделать сравнение в awk в Ubuntu? Операторы типа "-gt, -ge..." тоже не работают.

решение1

Сравнение в порядке, проблема в том, что вы пропустили переменную для сравнения. Поскольку вся ваша строка команды SSH заключена в двойные кавычки, она $5съедается вашей локальной оболочкой еще до того, как она доберется до 'ssh' – вы должны ввести ее как, \$5чтобы избежать этого. То же самое касается и $0последнего (обратите внимание, что сообщение об ошибке вместо этого говорит "print bash;").

Связанный контент