Як перевірити версію 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дає номер версії, але вихід занадто довгий, щоб зберігати змінну та використовувати пізніше.

Відповіді:


107

Для друку чи перегляду поточної версії VirtualBox слід скористатися командою нижче:

vboxmanage --version

яка буде друкувати поточну версію, як показано нижче;

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

Посилання 8.2. Огляд команд на офіційному сайті VirtualBox для отримання додаткової інформації.


Щоб надрукувати версію за допомогою сценарію, див. Нижче:

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

Сподіваюся, це допомагає.


1
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')і в echo $(vboxmanage --version)чому різниця? хіба вони не однакові?
souravc

@souravc - у вашому коментарі тут ви використовуєте --version, який видає лише один рядок і одне поле; тож використання headта awkобрізка є зайвим, і так, вони дають однаковий результат. У своїй відповіді нижче, можна використовувати --helpзамість --version, в цьому випадку headі awkпідрізування дійсно необхідно ... але ви все одно отримаєте менш точну інформацію, як версія знайдений через --helpтільки #. #. # Проти --versionяких дає #. #. # r # (версія з інформацією про перегляд).
DreadPirateShawn

@DreadPirateShawn ви маєте рацію, зараз це непотрібно. У той час я vboxmanageвикористовував якусь іншу інформацію, тому я запропонував це. Ви можете побачити редагування , ОП прийняло мою пропозицію. Навіщо мені робити речі складними :)
souravc

@souravc - Аааа ... смішно, як контекст робить речі яснішими. :-P Так ... відмінна порада. :-)
DreadPirateShawn

Оскільки VBox 5.0 також vbox-img --versionможе друкувати версію.
kenorb

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докладніше.


Було б чудово, якби ви могли розбити команду і пояснити, що робить кожна частина.
приєднався

@Jobin plz дивись мою редакцію.
souravc

2

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

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

Що робить кожна з цих труб, будь ласка, детально опишіться.
приєднатися

1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox - допомогти
Oracle VM VirtualBox Manager 4.3.6

Отже, запустіть команду нижче,

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

Вихід:

4.3.6

awk '/Oracle/{ print $5 }'

Шукає рядок, що складається зі слова. OracleЯкщо так, то команда підбирає п'ятий стовпець у цьому рядку та перенаправляє його до стандартного виводу. Якщо такого слова не було в жодному рядку, то він нічого не відображає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.