Я создаю сценарий для проверки требований к виртуальной машине у одного из моих клиентов. Первая часть скрипта - это проверка, виртуальная ОС или нет. Для достижения этой цели я создаю следующий сценарий. Проблема в том, что даже система виртуальная она не работает, я имею ввиду тест если не работает !!! Кто-нибудь может помочь и сказать, сделал ли я что-то не так (я новичок в сценарии оболочки и, вероятно, что-то не так).
CHECK_SYSTEM=`dmidecode | grep -i "Product Name: VMware Virtual Platform"`
if [ "$CHECK_SYSTEM" = "Product Name: VMware Virtual Platform" ] ; then
printf "%s\n" "The system is Virtual"
else
printf "%s\n" "The system is not Virtual"
exit 192
fi
Использовать echo
осмотреть $CHECK_SYSTEM
строка, возвращаемая вашей командой, это не то, что вы думаете. Вам нужно будет дополнительно обработать его, чтобы удалить некоторые пробелы.
Вы можете найти команду virt-what более полезной, если она установлена в системе, например.
# virt-what
vmware
или
# virt-what
kvm
virt-what - это сценарий оболочки, поэтому вы можете легко добавить копию в сценарии установки.
Также обратите внимание, что обычно рекомендуется использовать $(...)
а не обратные кавычки в наши дни.
@Iain правильно, что этот сценарий, вероятно, не делает то, что вам нужно, однако в целом, если вы хотите сравнить строки, у которых отсутствует знак равенства, это, вероятно, будет работать лучше:
if [ "$CHECK_SYSTEM" == "Product Name: VMware Virtual Platform" ] ; then
Смотрите эту отличную ветку для получения дополнительной информации: https://stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash-script