web-dev-qa-db-fra.com

Simple: vérifie si le groupe de volumes est trouvé avec un if

Je travaille sur un script pour vérifier si le groupe de volumes vg0 existe. Le problème est qu'il renvoie Found même lorsque je supprime le groupe de volumes. Donc, très incertain de ce qui ne va pas.

#!/bin/bash

if vgdisplay | grep 'vg0' | awk '{print $3}'; then
  echo "Found"
else
  echo "Not found"
fi
2
user3185936

Dans ce cas, la condition if est évaluée en fonction du code de sortie de awk, qui est susceptible d'être nul sauf si l'une des commandes précédentes du pipeline échec de l'exécution.

Vous pouvez utiliser l'option -q pour grep à la place:

if vgdisplay | grep -q 'vg0'; then
  echo "Found"
else
  echo "Not found"
fi

La même chose pourrait aussi s'écrire:

vgdisplay | grep -q 'vg0' && echo "Found" || echo "Not found"
2
devnull