Вопрос Как проверить версию виртуального бокса из CLI


Я пишу сценарий 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 дает номер версии, но выход слишком длинный для хранения в переменной и использования позже.


53
2018-02-13 13:34


происхождения




ответы:


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

vboxmanage --version

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

enter image description here

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


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

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

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


84
2018-02-13 13:44



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
@souravc - Ahhh ... забавно, как контекст делает вещи более ясными. :-P Итак ... отличный совет. :-) - DreadPirateShawn
Поскольку VBox 5.0, vbox-img --version также может печатать версию. - kenorb


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

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 для большего.


6
2018-02-13 13:44



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


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

dpkg -l | grep virtualbox | awk '{print $3}'

2
2018-02-13 13:44



Что делает каждая из этих команд, пожалуйста, будьте многословными. - jobin


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 . Если да, то команда поднимает пятый столбец на этой строке и перенаправляет его на стандартный вывод. Если в каких-либо строках не было такого слова, то он ничего не отображает.


1
2018-02-13 13:43