Как проверить версию Virtualbox из CLI

65

Я пишу сценарий Bash для хранения номера версии Virtualbox , но не удается.

Мой сценарий:

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

Я пытался

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

кажется, все открывают виртуальную коробку вместо вывода.
virtualbox --helpдает номер версии, но вывод слишком длинный, чтобы хранить его в переменной и использовать позже.

Braiam
источник

Ответы:

107

Чтобы распечатать или просмотреть текущую версию VirtualBox, вы должны использовать следующую команду:

vboxmanage --version

который затем напечатает текущую версию, как показано ниже;

введите описание изображения здесь

См. 8.2. Обзор команд на официальном сайте VirtualBox для получения дополнительной информации.


Чтобы распечатать версию с использованием сценария, см. Ниже:

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

Надеюсь, это поможет.

AzkerM
источник
1
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')а echo $(vboxmanage --version)какая разница? разве они не одинаковы?
souravc
@souravc - в своем комментарии вы используете --version, который выводит только одну строку и одно поле; поэтому использование headи awkдля обрезки является излишним, и да, они выдают один и тот же результат. В своем ответе ниже вы используете --helpвместо --version, в этом случае headи awkобрезка действительно необходима ... но вы все равно получаете менее точную информацию, так как найденная с помощью версии --helpтолько #. #. # Vs, --versionчто приводит к #. #. # r # (версия с информацией о ревизии).
DreadPirateShawn
@DreadPirateShawn вы правы, теперь это не нужно. В то время я vboxmanageприходил с другой информацией, поэтому я и предложил это. Вы можете увидеть редактирование , OP принял мое предложение. Зачем мне все
усложнять
@souravc - Аааа ... забавно, как контекст проясняет ситуацию. :-P Так что ... отличный совет. :-)
DreadPirateShawn
Начиная с VBox 5.0, vbox-img --versionможно печатать и версию.
Кенорб
7

Вы можете попробовать это,

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

или же

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

Как это устроено

Шаг 1

virtualbox --help

дает длинный вывод, говоря много вариантов и т. д. Но его самые первые строки, как,

Oracle VM VirtualBox Manager 4.3.6
(C) 2005-2013 Oracle Corporation
Все права защищены.
...

Шаг 2

| head -n 1

|называется труба. У этого есть большое применение в командной строке. Он передает все выражение следующей команде head. head -n 1печатает только первую строку. смотрите man headбольше. На этом этапе вывод только

Oracle VM VirtualBox Manager 4.3.6

Шаг 3

| awk '{print $NF}'

Снова оставшиеся вещи передаются awk. На этом этапе awkвся строка рассматривается как комбинация нескольких полей, разделенных пробелом, и печатает только последнее поле вышеприведенного выражения. Таким образом, вы получаете только версию. Смотрите man awkбольше.

souravc
источник
Было бы здорово, если бы вы могли разбить команду и объяснить, что делает каждая часть.
Jobin
@Jobin плз посмотреть мои правки.
souravc
2

вы можете узнать версию пакета, установленного с dpkg и grep с конвейером

dpkg -l | grep virtualbox | awk '{print $3}'
Мина Ид
источник
Что делает каждая из этих команд, пожалуйста, будьте многословны.
Jobin
1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox --help
Oracle VM VirtualBox Manager 4.3.6

Запустите следующую команду:

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

Выход:

4.3.6

awk '/Oracle/{ print $5 }'

Ищет строку, состоящую из слова. OracleЕсли да, то команда выбирает пятый столбец в этой строке и перенаправляет его на стандартный вывод. Если такого слова не было в каких-либо строках, то ничего не отображается.

Авинаш Радж
источник