Я пытаюсь определить, работает ли данная виртуальная машина, используя сценарий оболочки.
Команда "virsh list | grep MediaWiki" при запуске вручную возвращает одну строку, если виртуальная машина запущена, и ничего не возвращает, когда это не так.
Я пытаюсь использовать:
if [`virsh list | grep MediaWiki` !== ""]
then
echo "The MediaWiki VM is Running!"
else
echo "Not Running!"
fi
Но я не думаю, что у меня правильный синтаксис. С помощью приведенного выше кода он утверждает, что машина работает, независимо от того, работает она или нет.
Вы можете проверить возвращаемое значение grep -q
если вам не нужны результаты grep. Он возвращает 0, если что-то совпало.
if virsh list | grep -q MediaWiki
then
echo "The MediaWiki VM is Running!"
else
echo "Not Running!"
fi
У вас есть восклицательный знак, за которым следуют два знака равенства для «не равно». Должно быть "! =". Также должен быть пробел после левой квадратной скобки и один перед правой квадратной скобкой. Кроме того, чтобы проверить такую нулевую строку, вы должны использовать двойные квадратные скобки. Предпочтительный способ подстановки команд - использовать $()
вместо обратных кавычек.
if [[ $(virsh list | grep MediaWiki) != "" ]]
Все это предполагает, что вы используете оболочку вроде Bash, которая поддерживает эти функции. Если нет, то это должно сработать:
if [ `virsh list | grep MediaWiki` ]
Следует иметь в виду, что если ваша команда возвращает null или "", то вы хотите использовать старый трюк DOS для сравнения значений NULL:
#!/bin/sh
foo=`<command stuff here>`
if [ "X$foo" == "X" ]
then
echo "returned null"
else
echo "return positive"
fi
Проверьте руководство по написанию сценариев