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 --help
podaje numer wersji, ale dane wyjściowe są zbyt długie, aby zapisać je w zmiennej i użyć później.
bash
virtualbox
Braiam
źródło
źródło
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')
aecho $(vboxmanage --version)
jaka jest różnica czyż nie są tacy sami?--version
, który wyświetla tylko jedną linię i jedno pole; więc używaniehead
iawk
do przycinania jest zbędne i tak, dają one ten sam wynik. W swojej odpowiedzi poniżej, należy użyć--help
zamiast--version
, w takim przypadkuhead
iawk
jest rzeczywiście konieczne przycinanie ... ale wciąż mniej dokładne informacje, jak wersja znaleźć za pośrednictwem--help
tylko #. #. # Vs--version
co daje #. #. # r # (wersja z informacjami o wersji).vboxmanage
pojawiały się inne informacje, dlatego to zaproponowałem. Możesz zobaczyć zmianę , OP zaakceptował moją sugestię. Dlaczego miałbym robić rzeczy skomplikowane :)vbox-img --version
można również wydrukować wersję.Możesz tego spróbować
lub
Jak to działa
Krok 1
virtualbox --help
daje długi wynik z wieloma opcjami itp. Ale jego pierwsze wiersze są takie,
Krok 2
| head -n 1
|
nazywa się fajką. Ma świetną aplikację w wierszu poleceń. Przekazuje całe wyrażenie do następnego poleceniahead
.head -n 1
wypisuje tylko pierwszą linię. zobaczman head
więcej. Na tym etapie wydajność jest tylkoKrok 3
| awk '{print $NF}'
Ponownie pozostałe rzeczy są przekazywane
awk
. Na tym etapieawk
widzi całą linię jako kombinacje kilku pól oddzielonych spacją i wypisuje tylko ostatnie pole powyższego wyrażenia. Więc dostajesz tylko wersję. Zobaczman awk
więcej.źródło
możesz znać wersję pakietu zainstalowanego z dpkg i grep z pipingiem
źródło
Więc uruchom poniższe polecenie,
Wynik:
awk '/Oracle/{ print $5 }'
Wyszukuje wiersz składający się ze słowa.
Oracle
Jeś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.źródło