bash (ao contrário de ksh93 ou zsh 1 ) não pode fazer aritmética de ponto flutuante. awk pode, então você pode fazer a coisa toda em awk .
Além disso, você não precisa usar top (e esperar 1 segundo) para obter a carga. A maneira canônica de obter a carga é de uptime .
uptime | awk '{load=+$(NF-2)}
load > 2 {print "CRITICAL: " load; exit 2}
load > 1 {print "WARNING: " load; exit 1}
{print "OK: " load; exit 0}
END {if (!NR) {print "UNKNOWN"; exit 3}'
exit
1 Em zsh , você precisa usar a sintaxe (( loadavg > 2 )) em vez de [ "$loadavg" -gt 2 ] para comparar não-inteiros