web-dev-qa-db-ja.com

シンプル:ifでボリュームグループが見つかったかどうかを確認する

ボリュームグループvg0が存在するかどうかを確認するスクリプトを作成しています。問題は、ボリュームグループを削除しても、Foundが返されることです。だから何が間違っているのか非常によくわからない。

#!/bin/bash

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

この場合のif条件は、awkの終了コードに基づいて評価されます。これは、パイプラインの前のコマンドの1つ実行に失敗しました =。

代わりにgrep-qオプションを使用できます:

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

同じように書くこともできます:

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