Jak mogę sprawdzić wersję virtualbox z CLI

65

Piszę skrypt Bash do przechowywania numeru wersji Virtualbox , ale nie może się powieść.

Mój skrypt to:

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

próbowałem

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

wszystko wydaje się otwierać virtualbox zamiast wyjścia.
virtualbox --helppodaje numer wersji, ale dane wyjściowe są zbyt długie, aby zapisać je w zmiennej i użyć później.

Braiam
źródło

Odpowiedzi:

107

Aby wydrukować lub wyświetlić aktualną wersję VirtualBox , należy użyć poniższego polecenia:

vboxmanage --version

który następnie wydrukuje bieżącą wersję, jak pokazano poniżej;

wprowadź opis zdjęcia tutaj

Patrz 8.2. Przegląd poleceń na oficjalnej stronie VirtualBox, aby uzyskać więcej.


Aby wydrukować wersję za pomocą skryptu, patrz poniżej:

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

Mam nadzieję, że to pomoże.

AzkerM
źródło
1
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')a echo $(vboxmanage --version)jaka jest różnica czyż nie są tacy sami?
souravc
@souravc - W tym miejscu w komentarzu używasz --version, który wyświetla tylko jedną linię i jedno pole; więc używanie headi awkdo przycinania jest zbędne i tak, dają one ten sam wynik. W swojej odpowiedzi poniżej, należy użyć --helpzamiast --version, w takim przypadku headi awkjest rzeczywiście konieczne przycinanie ... ale wciąż mniej dokładne informacje, jak wersja znaleźć za pośrednictwem --helptylko #. #. # Vs --versionco daje #. #. # r # (wersja z informacjami o wersji).
DreadPirateShawn
@DreadPirateShawn masz rację, teraz nie jest to konieczne. W tamtym czasie vboxmanagepojawiały się inne informacje, dlatego to zaproponowałem. Możesz zobaczyć zmianę , OP zaakceptował moją sugestię. Dlaczego miałbym robić rzeczy skomplikowane :)
souravc
@souravc - Ahhh ... zabawne, jak kontekst czyni wszystko jaśniejszym. :-P Więc ... doskonała wskazówka. :-)
DreadPirateShawn
Od VBox 5.0 vbox-img --versionmożna również wydrukować wersję.
kenorb
7

Możesz tego spróbować

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

lub

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

Jak to działa

Krok 1

virtualbox --help

daje długi wynik z wieloma opcjami itp. Ale jego pierwsze wiersze są takie,

Oracle VM VirtualBox Manager 4.3.6
(C) 2005-2013 Oracle Corporation
Wszelkie prawa zastrzeżone.
...

Krok 2

| head -n 1

|nazywa się fajką. Ma świetną aplikację w wierszu poleceń. Przekazuje całe wyrażenie do następnego polecenia head. head -n 1wypisuje tylko pierwszą linię. zobacz man headwięcej. Na tym etapie wydajność jest tylko

Oracle VM VirtualBox Manager 4.3.6

Krok 3

| awk '{print $NF}'

Ponownie pozostałe rzeczy są przekazywane awk. Na tym etapie awkwidzi całą linię jako kombinacje kilku pól oddzielonych spacją i wypisuje tylko ostatnie pole powyższego wyrażenia. Więc dostajesz tylko wersję. Zobacz man awkwięcej.

souravc
źródło
Byłoby świetnie, gdybyś mógł rozbić polecenie i wyjaśnić, co robi każda część.
jobin
@Jobin plz zobacz moją edycję.
souravc
2

możesz znać wersję pakietu zainstalowanego z dpkg i grep z pipingiem

dpkg -l | grep virtualbox | awk '{print $3}'
Mina Eid
źródło
Czym zajmuje się każde z tych potokowych poleceń, proszę, mówcie wszystko.
jobin
1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox --help
Oracle VM VirtualBox Manager 4.3.6

Więc uruchom poniższe polecenie,

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

Wynik:

4.3.6

awk '/Oracle/{ print $5 }'

Wyszukuje wiersz składający się ze słowa. OracleJeśli tak, to polecenie pobiera piątą kolumnę w tym wierszu i przekierowuje ją do standardowego wyjścia. Jeśli żadne słowo nie było obecne w żadnym wierszu, nic nie wyświetla.

Avinash Raj
źródło