Wie überprüfe ich die Virtualbox-Version von CLI

65

Ich schreibe ein Bash-Skript zum Speichern der Versionsnummer von Virtualbox , kann aber keinen Erfolg haben.

Mein Skript ist:

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

Ich habe es versucht

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

alles scheint die virtualbox anstatt der ausgabe zu öffnen.
virtualbox --helpgibt die Versionsnummer an, aber die Ausgabe ist zu lang, um sie in einer Variablen zu speichern und später zu verwenden.

Braiam
quelle

Antworten:

107

Um die aktuelle VirtualBox- Version zu drucken oder anzuzeigen , sollten Sie den folgenden Befehl verwenden:

vboxmanage --version

Die aktuelle Version wird dann wie unten gezeigt gedruckt.

Bildbeschreibung hier eingeben

Siehe 8.2. Befehlsübersicht auf der offiziellen VirtualBox-Site für mehr.


Informationen zum Drucken der Version mithilfe des Skripts finden Sie unten:

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

Ich hoffe es hilft.

AzkerM
quelle
1
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')und echo $(vboxmanage --version)was ist der unterschied sind sie nicht gleich
Souravc
@souravc - In Ihrem Kommentar hier verwenden Sie --version, der nur eine Zeile und ein Feld ausgibt; Die Verwendung von headund awkzum Trimmen ist also überflüssig, und ja, sie geben dasselbe Ergebnis aus. In Ihrer Antwort unten verwenden Sie --helpstatt --version, wobei in diesem Fall headund awkTrimmen in der Tat notwendig sind ... aber immer noch weniger genaue Informationen erhalten, wie die über gefundene Version --helpnur # ist. #. # Vs --versiondenen ergeben #. #. # r # (Version mit Versionsinfo).
DreadPirateShawn
@DreadPirateShawn Sie sind jetzt richtig, es ist unnötig. Zu dieser Zeit gab vboxmanagees noch einige andere Infos, deshalb habe ich das vorgeschlagen. Sie können die Bearbeitung sehen , OP nahm meinen Vorschlag an. Warum sollte ich die Dinge komplex machen :)
souravc
@souravc - Ahhh ... lustig, wie der Kontext die Dinge klarer macht. :-P Also ... ausgezeichneter Tipp. :-)
DreadPirateShawn
Seit VBox 5.0 vbox-img --versionkann die Version auch gedruckt werden.
Kenorb
7

Sie können dies versuchen,

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

oder

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

Wie es funktioniert

Schritt 1

virtualbox --help

gibt Ihnen eine lange Ausgabe mit vielen Optionen usw. Aber die ersten Zeilen sind wie folgt:

Oracle VM VirtualBox Manager 4.3.6
(C) 2005-2013 Oracle Corporation
Alle Rechte vorbehalten.
...

Schritt 2

| head -n 1

|heißt Pipe. Es hat eine großartige Anwendung in der Kommandozeile. Es übergibt den gesamten Ausdruck an den nächsten Befehl head. head -n 1druckt nur die erste Zeile. sehen Sie man headfür mehr. Zu diesem Zeitpunkt wird nur ausgegeben

Oracle VM VirtualBox Manager 4.3.6

Schritt 3

| awk '{print $NF}'

Wieder werden die restlichen Sachen an übergeben awk. Zu diesem Zeitpunkt wird awkdie gesamte Zeile als Kombination von wenigen durch Leerzeichen getrennten Feldern betrachtet und nur das letzte Feld des obigen Ausdrucks gedruckt. Sie erhalten also nur die Version. Sehen Sie man awkfür mehr.

souravc
quelle
Wäre großartig, wenn Sie den Befehl aufschlüsseln und erklären könnten, was die einzelnen Teile tun.
jobin
@ Jobin PLZ siehe meine bearbeiten.
Souravc
2

Sie könnten die Version des Pakets kennen, das mit dpkg und grep mit piping installiert wurde

dpkg -l | grep virtualbox | awk '{print $3}'
Mina Eid
quelle
Was macht jeder dieser weitergeleiteten Befehle, seien Sie bitte ausführlich.
jobin
1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox --help
Oracle VM VirtualBox Manager 4.3.6

Führen Sie den folgenden Befehl aus:

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

Ausgabe:

4.3.6

awk '/Oracle/{ print $5 }'

Sucht nach der Zeile, die aus dem Wort besteht. OracleWenn ja, nimmt der Befehl die fünfte Spalte in dieser Zeile auf und leitet sie zur Standardausgabe um. Wenn in keiner Zeile ein solches Wort vorhanden war, wird nichts angezeigt.

Avinash Raj
quelle