Comment vérifier la version de virtualbox à partir de la CLI

65

J'écris un script Bash pour stocker le numéro de version de Virtualbox , mais ne peut pas réussir.

Mon script est:

#!/bin/bash
installed_virtualbox=$(virtualbox --version) # --version this is what I want to change

j'ai essayé

virtualbox --version
virtualbox -v
virtualbox -V
virtualbox --Version

tout semble ouvrir la virtualbox au lieu de la sortie.
virtualbox --helpdonne le numéro de version, mais la sortie est trop longue pour être stockée dans variable et utilisée plus tard.

Braiam
la source

Réponses:

107

Pour imprimer ou afficher la version actuelle de VirtualBox , vous devez utiliser la commande ci-dessous:

vboxmanage --version

qui imprimera alors la version actuelle comme on le voit ci-dessous;

entrez la description de l'image ici

Voir 8.2. Vue d'ensemble des commandes sur le site officiel de VirtualBox pour plus d'informations.


Pour imprimer la version à l'aide du script, voir ci-dessous:

#!/bin/bash
echo $(vboxmanage --version)

J'espère que ça aide.

AzkerM
la source
1
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')et echo $(vboxmanage --version)quelle est la différence? ne sont-ils pas pareils?
Souravc
@souravc - Dans votre commentaire ici, vous utilisez --version, qui ne génère qu'une ligne et un champ; donc utiliser headet awkcouper est redondant, et oui, ils produisent le même résultat. Dans votre réponse ci-dessous, vous utilisez à la --helpplace de --version, auquel cas head, le awkrognage est en effet nécessaire ... mais vous obtenez toujours des informations moins précises, car la version trouvée via --helpest seulement #. #. # Vs --versionce qui donne #, #. # r # (version avec informations de révision).
DreadPirateShawn
@DreadPirateShawn vous avez raison maintenant, c'est inutile. A cette époque, vboxmanagej'avais l'habitude de venir avec d'autres informations, c'est pourquoi j'ai proposé cela. Vous pouvez voir l'édition , OP a accepté ma suggestion. Pourquoi devrais-je rendre les choses complexes :)
Souravc
@souravc - Ahhh ... c'est drôle comment le contexte rend les choses plus claires. :-P Alors ... excellent conseil. :-)
DreadPirateShawn
Depuis la VBox 5.0, vous vbox-img --versionpouvez également imprimer la version.
Kenorb
7

Tu peux essayer ça,

virtualbox --help | head -n 1 | awk '{print $NF}'

ou

$ echo $(virtualbox --help | head -n 1 | awk '{print $NF}')
4.3.6

Comment ça fonctionne

Étape 1

virtualbox --help

vous donne une longue sortie en disant beaucoup d'options, etc. Mais ses toutes premières lignes sont comme,

Oracle VM VirtualBox Manager 4.3.6
(C) 2005-2013 Oracle Corporation
Tous droits réservés.
...

Étape 2

| head -n 1

|s'appelle pipe. Il a une grande application en ligne de commande. Il passe toute l'expression à la commande suivante head. head -n 1affiche uniquement la première ligne. voir man headpour plus. A ce stade, la sortie est seulement

Oracle VM VirtualBox Manager 4.3.6

Étape 3

| awk '{print $NF}'

Encore une fois, les choses restantes sont passées à awk. A ce stade, awkla ligne entière est une combinaison de quelques champs séparés par un espace et n'imprime que le dernier champ de l'expression ci-dessus. Donc, vous obtenez la version seulement. Voir man awkpour plus.

souravc
la source
Ce serait bien si vous pouviez décomposer la commande et expliquer ce que chaque partie fait.
jobin
@Jobin plz voir mon édition.
Souravc
2

vous pourriez connaître la version du paquet installé avec dpkg et grep avec la tuyauterie

dpkg -l | grep virtualbox | awk '{print $3}'
Mina Eid
la source
Que fait chacune de ces commandes diffusées? S'il vous plaît, soyez prolixe.
jobin
1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox --help
Oracle VM VirtualBox Manager 4.3.6

Alors lancez la commande ci-dessous,

virtualbox --help | awk '/Oracle/{ print $5 }'

Sortie:

4.3.6

awk '/Oracle/{ print $5 }'

Recherche la ligne qui contient le mot Oracle.Si oui, la commande sélectionne la cinquième colonne de cette ligne et la redirige vers la sortie standard. Si aucun mot de ce type n'était présent sur les lignes, il n'affiche rien.

Avinash Raj
la source