我正在尝试编写一个脚本来检查远程客户端的磁盘使用情况。脚本中有一个过滤器,用于有意义的输出:
...
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
在 Ubuntu 中,如何在 awk 中进行比较?“-gt、-ge...” 等运算符也不起作用。
答案1
比较没有问题,问题是您缺少要比较的变量。由于整个 SSH 命令行都在双引号内,因此在$5
到达“ssh”之前,您的本地 shell 就已经将其占用 - 您必须将其键入为以\$5
避免这种情况。后者也是如此$0
(请注意错误消息如何在其位置显示“print bash;”)。