Я создаю сценарий для проверки требований к виртуальной машине у одного из моих клиентов. Первая часть скрипта - это проверка, виртуальная ОС или нет. Для достижения этой цели я создаю следующий сценарий. Проблема в том, что даже система виртуальная она не работает, я имею ввиду тест если не работает !!! Кто-нибудь может помочь и сказать, сделал ли я что-то не так (я новичок в сценариях оболочки и, вероятно, что-то не так).
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 - это скрипт оболочки, так что вы можете легко добавить копию в ваши установочные скрипты.
Также обратите внимание, что в наши дни обычно предпочтительнее использовать $(...)
, чем обратные ссылки.
@Ведь правильно, что этот скрипт, скорее всего, не делает того, что вам нужно, однако в целом, если вы хотите сравнить строки, в которых отсутствует знак равенства, то это, вероятно, будет работать лучше:
if [ "$CHECK_SYSTEM" == "Product Name: VMware Virtual Platform" ] ; then
Смотрите этот отличный поток для более подробной информации: https://stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash-script