简单:使用 if 检查是否找到卷组

简单:使用 if 检查是否找到卷组

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

相关内容