Confronta string sullo script di shell

Sto creando uno script per controllare i requisiti relativi a VM in uno dei miei clienti. La prima parte dello script è controllare se il sistema operativo è virtuale o less. Per raggiungere questo objective creo il seguente script. Il problema è che anche il sistema è virtuale non funziona, voglio dire il test se non funziona !!! Qualcuno può aiutare e dire se ho fatto qualcosa di sbagliato (sono principiante nello script di shell e probabilmente è qualcosa di sbagliato).

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 

  • Comando Linux / SSH per eliminare each filepath trovato nel file
  • Monitorare l'attività di shell di un utente sul sistema Unix?
  • C'è un'utilità Linux per restituire un codice di errore per un determinato input?
  • Shell = Controlla se la variabile inizia con #
  • C'è un modo per configurare bash per sempre la pagina di output?
  • Aggiunta di una directory a $ PATH in CentOS?
  • ricostruendo la session di shell da un tipo di text
  • Copiare i file dalle directory secondarie in una directory
  • 2 Solutions collect form web for “Confronta string sullo script di shell”

    Utilizza echo per ispezionare la string $CHECK_SYSTEM restituita dal tuo command, non è quello che pensi sia. Dovrai elaborarla ulteriormente per rimuovere un certo spazio.

    È ansible trovare il command virt-cosa più utile se è installato nel sistema ad esempio

     # virt-what vmware 

    o

     # virt-what kvm 

    virt-ciò che è uno script di shell in modo da poter aggiungere facilmente una copia agli script di installazione.

    Si noti inoltre che è generalmente preferito utilizzare $(...) piuttosto che indietro in questi giorni.

    @Iain è corretto che questo script probabilmente non sta facendo quello che ti serve, ma in generale se stai cercando di confrontare le stringhe che manchi un equalsign, probabilmente functionrebbe meglio:

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

    Vedi questo thread eccellente per ulteriori informazioni: https://stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash-script

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.