comparação awk no Ubuntu

comparação awk no Ubuntu

Estou tentando escrever um script que verifique o uso do disco de clientes remotos. Há um filtro no script para saída significativa:

...

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

...

Esta linha de comando é executada com sucesso em máquinas CentOS/RHEL, mas há um erro sobre o comando awk no Ubuntu, como abaixo:

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

Como posso fazer comparação no awk no Ubuntu? Operadores como "-gt, -ge..." também não funcionam.

Responder1

A comparação está correta, o problema é que está faltando a variável para comparar. Como toda a sua linha de comando SSH está entre aspas duplas, o $5é comido pelo seu shell local antes mesmo de chegar a 'ssh' - você deve digitá-lo para \$5evitar isso. O mesmo vale para o $0último (observe como a mensagem de erro diz "print bash;" em seu lugar).

informação relacionada