Я работаю над небольшим проектом VMware ESXi (личный проект, не для какой-либо компании).
Я пытаюсь создать HTML-файл, который содержит таблицу с некоторой информацией из ОС ESXi, такой как время / дата, версия ОС, номер исправления и т. Д.
Однако есть некоторые команды, которые не дают вывода, и тогда в моей таблице есть пустое поле (ячейка).
То, что я пытаюсь сделать .. и ужасно терпит неудачу в ..., это то, что я пытаюсь вставить простое утверждение if-else-fi в сценарий оболочки, которое проверило бы, пустой вывод или нет.
Вот команда, которую я использую для проверки, есть ли выходные данные для команды:
if [ $(esxcli hardware ipmi bmc get |grep -i gate |awk '{print $2}') != " " ]; then echo "Not Empty!"; else echo "Empty!"; fi
Проблема в том, что, хотя он и дает правильный результат, он также печатает следующее:
sh: : unknown operand
Empty!
Да, результат должен быть "Пусто!", Но я не могу избавиться от сообщения "sh:: unknown operand".
Кажется, ему не нравится, что операнд! = Не близок к ")".
Если, однако, я поставлю операнд "! =" Рядом с ")", вот так:
if [ $(esxcli hardware ipmi bmc get |grep -i gate |awk '{print $2}')!=" " ]; then echo "Not Empty!"; else echo "Empty!"; fi
.. больше не выдает сообщение «sh:: unknown operand», но дает неверный результат «Not Empty!».
Однако, если я вставляю команду в оператор if-else-fi, которая выдает вывод, например:
if [ $(esxcli system time get) != " " ]; then echo "Not Empty!"; else echo "Empty!"; fi
.. он не выдает сообщений «sh:: неизвестный операнд» и дает правильный результат «Не пусто!»
Я пытался следующими способами, но он выдал то же самое сообщение "sh:: unknown operand":
if [[ $(esxcli hardware ipmi bmc get |grep -i gate |awk '{print $2}') != " " ]]; then echo "Not Empty!"; else echo "Empty!"; fi
if [ -n $(esxcli hardware ipmi bmc get |grep -i gate |awk '{print $2}') ]; then echo "Not Empty!"; else echo "Empty!"; fi
if [ -z $(esxcli hardware ipmi bmc get |grep -i gate |awk '{print $2}') ]; then echo "Not Empty!"; else echo "Empty!"; fi
if "$(esxcli hardware ipmi bmc get |grep -i gate |awk '{print $2}')" == " " ; then echo "Not Empty!"; else echo "Empty!"; fi
if $(esxcli hardware ipmi bmc get |grep -i gate |awk '{print $2}')==" "; then echo "Not Empty!"; else echo "Empty!"; fi
Как я могу избавиться от этого сообщения ... Что еще я могу сделать?