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

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

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
3
задан 4 February 2016 в 13:57
2 ответа

Используйте echo для проверки строки $CHECK_SYSTEM, возвращаемой вашей командой, это не то, что вы думаете. Вам нужно будет продолжить обработку, чтобы удалить некоторые пробелы.

Вам может показаться более полезным использование команды virt-what, если она установлена в системе, например

# virt-what 
vmware

или

# virt-what
kvm

virt-what - это скрипт оболочки, так что вы можете легко добавить копию в ваши установочные скрипты.

Также обратите внимание, что в наши дни обычно предпочтительнее использовать $(...), чем обратные ссылки.

.
2
ответ дан 3 December 2019 в 06:30

@Ведь правильно, что этот скрипт, скорее всего, не делает того, что вам нужно, однако в целом, если вы хотите сравнить строки, в которых отсутствует знак равенства, то это, вероятно, будет работать лучше:

if [ "$CHECK_SYSTEM" == "Product Name: VMware Virtual Platform" ] ; then

Смотрите этот отличный поток для более подробной информации: https://stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash-script

1
ответ дан 3 December 2019 в 06:30

Теги

Похожие вопросы