![简单:使用 if 检查是否找到卷组](https://linux22.com/image/971918/%E7%AE%80%E5%8D%95%EF%BC%9A%E4%BD%BF%E7%94%A8%20if%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%BE%E5%88%B0%E5%8D%B7%E7%BB%84.png)
我正在编写一个脚本来检查卷组 vg0 是否存在。问题是,即使我删除了卷组,它也会返回 Found。所以非常不确定哪里出了问题。
#!/bin/bash
if vgdisplay | grep 'vg0' | awk '{print $3}'; then
echo "Found"
else
echo "Not found"
fi
答案1
在这种情况下,条件if
是根据的退出代码进行评估的awk
,除非管道中的前一个命令之一执行失败。
您可以改用以下-q
选项grep
:
if vgdisplay | grep -q 'vg0'; then
echo "Found"
else
echo "Not found"
fi
也可以写成:
vgdisplay | grep -q 'vg0' && echo "Found" || echo "Not found"
答案2
我认为这样更正确:
vgdisplay 'vg0' && echo "Found" || echo "Not found"
您使用的条件仅关心 grep 的退出代码。无论 grep 是否在 vgdisplay 的输出文本中找到 vg,它都会返回成功代码。因此您的语句将始终返回“Found”。