Назад | Перейти на главную страницу

Сравнить строку в сценарии оболочки

Я создаю сценарий для проверки требований к виртуальной машине у одного из моих клиентов. Первая часть скрипта - это проверка, виртуальная ОС или нет. Для достижения этой цели я создаю следующий сценарий. Проблема в том, что даже система виртуальная она не работает, я имею ввиду тест если не работает !!! Кто-нибудь может помочь и сказать, сделал ли я что-то не так (я новичок в сценарии оболочки и, вероятно, что-то не так).

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