echo 3 statements based wc -l count number 在输出中返回
echo 3 statements based wc -l count number returned in output
团队,我的命令运行良好,但我正在增强它以获得如下结果
我的目标是用它报告计数和显示语句。
我要满足三个条件
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 '[=18=] = 0 { printf "No mounts found", [=18=],"TRUE" ; } ([=18=] > 0 && [=18=] <= 64) { print "Mounts are less than 64", [=18=] ;} [=18=] > 64 { print "Mounts are more than 64", [=18=] ;}'
输出:
node1
预计:
node1 No mounts found
具有扩展和优化的管道:
mount | grep -Ec '/dev/sd.*\<csi' \
| awk '{ print [=10=],"mounts found on hostname"([=10=]>64? " that are more than 64." : ".") }'
grep
的-c
选项——抑制正常输出;而是打印匹配行数
符号\<
和\>
分别匹配词首和词尾的空串
团队,我的命令运行良好,但我正在增强它以获得如下结果
我的目标是用它报告计数和显示语句。
我要满足三个条件
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 '[=18=] = 0 { printf "No mounts found", [=18=],"TRUE" ; } ([=18=] > 0 && [=18=] <= 64) { print "Mounts are less than 64", [=18=] ;} [=18=] > 64 { print "Mounts are more than 64", [=18=] ;}'
输出:
node1
预计:
node1 No mounts found
具有扩展和优化的管道:
mount | grep -Ec '/dev/sd.*\<csi' \
| awk '{ print [=10=],"mounts found on hostname"([=10=]>64? " that are more than 64." : ".") }'
grep
的-c
选项——抑制正常输出;而是打印匹配行数
符号\<
和\>
分别匹配词首和词尾的空串