【发布时间】:2020-04-11 10:40:44
【问题描述】:
团队,我的以下命令运行良好,但我正在对其进行增强以获得如下所示的结果
我的目标是报告计数和显示语句。
我要满足三个条件
1 - 如果结果 = 0 未找到挂载
2 - 如果结果 = 1-64,则在 64 下找到挂载
3 - 如果结果 = 64+,则发现高于 64 的挂载
如果计数为0我想输出:
0 mounts found on this hostname
如果找到 1-64 个挂载,那么我想说找到的任何数量
x mounts found on hostname.
如果发现超过 64 个坐骑,那么我想说
x mounts found on hostname that are more than 64
mount | grep csi | grep -e /dev/sd | wc -l && echo "mounts found on $HOSTNAME"
我正在尝试学习如何将返回的计数与 64 进行比较并相应地替换语句。对于所有这些,我需要一个单行 shell 命令,而不是多个,因为我需要将它放入 ansible shell 模块中。
样本输出:
mount | grep csi
tmpfs on /var/lib/kubelet/pods/abaa868f-2109-11ea-a1f8-ac1f6b5995dc/volumes/kubernetes.io~secret/csi-nodeplugin-token-type tmpfs (rw,relatime)
/host/dev/sdc on /var/lib/kubelet/pods/11ea-a1f8-ac1f6b5995dc/volumes/kubernetes.io~csi/ea6728b2-08d0-5fb7-b93a-5f63e49f770c/mount type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,fsc,readahead=4096)
mount | grep csi | grep /dev/sd
/host/dev/sdc on /var/lib/kubelet/pods/11ea-a1f8-ac1f6b5995dc/volumes/kubernetes.io~csi/b93a-5f63e49f770c/mount type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,fsc,readahead=4096)
任何提示为什么这在下面不起作用?
尝试过的解决方案:使用 awk 和比较运算符
mount | grep -Ec '/dev/sd.*\<csi' | awk '$0 = 0 { printf "No mounts found", $0,"TRUE" ; } ($0 > 0 && $0 <= 64) { print "Mounts are less than 64", $0 ;} $0 > 64 { print "Mounts are more than 64", $0 ;}'
输出:
node1
预期:
node1 No mounts found
【问题讨论】:
-
0和1-64的输出消息基本相同 -
为什么?我想要 0 和任何