Compare a string no shell script

3

Estou criando um script para verificar os requisitos sobre VM em um dos meus clientes. A primeira parte do script é verificar se o sistema operacional é virtual ou não. Para atingir esse objetivo, eu crio o seguinte script. O problema é que mesmo o sistema é virtual não está funcionando, quero dizer o teste se não estiver funcionando !!! Alguém pode ajudar e dizer se eu fiz algo errado (eu sou iniciante no shell script e provavelmente isso é algo errado).

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
    
por Wellington Ferraz 04.02.2016 / 12:51

2 respostas

2

Use echo para inspecionar a string $CHECK_SYSTEM retornada pelo seu comando, não é o que você acha que é. Você precisará processá-lo para remover alguns espaços em branco.

Você pode achar o comando virt-what mais útil se estiver instalado no sistema, por exemplo

# virt-what 
vmware

ou

# virt-what
kvm

virt-o que é um script de shell para que você possa adicionar uma cópia aos seus scripts de instalação.

Note também que geralmente é preferível usar $(...) em vez de backticks nos dias de hoje.

    
por 04.02.2016 / 13:09
1

@Iain está certo de que este script provavelmente não está fazendo o que você precisa. No entanto, em geral, se você quiser comparar strings com um sinal de igual, provavelmente funcionará melhor:

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

Veja este excelente tópico para mais: link

    
por 04.02.2016 / 14:18