Я работаю над сценарием, чтобы проверить, существует ли группа томов vg0. Проблема в том, что он возвращает Найдено даже при удалении группы томов. Так что очень не уверен, что не так.
#!/bin/bash
if vgdisplay | grep 'vg0' | awk '{print $3}'; then
echo "Found"
else
echo "Not found"
fi
Условие 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"
Я думаю, что так правильнее:
vgdisplay 'vg0' && echo "Найдено" || echo "Not found"
Условие, которое вы используете, учитывает только код выхода grep. Либо grep может найти vg, либо нет в выходном тексте vgdisplay, он вернется с кодом успеха. Таким образом, ваша выписка всегда будет возвращать «Найдено».