Просто: проверьте, найдена ли группа томов с помощью if

Я работаю над сценарием, чтобы проверить, существует ли группа томов vg0. Проблема в том, что он возвращает Найдено даже при удалении группы томов. Так что очень не уверен, что не так.

#!/bin/bash

if vgdisplay | grep 'vg0' | awk '{print $3}'; then
  echo "Found"
else
  echo "Not found"
fi
2
задан 18 February 2014 в 17:40

2 ответа

Условие 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"
0
ответ дан 18 February 2014 в 17:40
  • 1
    Да it' s 64 бита. I' m на efi, и попробовали каждую комбинацию возможных настроек BIOS. Я действительно вставлял пустой диск и тем не менее ту же проблему. I' m думающий, возможно, я должен сбросить свою батарею CMOS, но меня can' t достигают, это в данный момент (должен получить более длинного главу Philips). – user226133 12 August 2015 в 19:13

Я думаю, что так правильнее: vgdisplay 'vg0' && echo "Найдено" || echo "Not found"

Условие, которое вы используете, учитывает только код выхода grep. Либо grep может найти vg, либо нет в выходном тексте vgdisplay, он вернется с кодом успеха. Таким образом, ваша выписка всегда будет возвращать «Найдено».

1
ответ дан 13 February 2020 в 10:41

Другие вопросы по тегам:

Похожие вопросы: