我正在编写一个脚本来检查卷组 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”。