Como verifico a versão do VirtualBox da CLI

65

Estou escrevendo um script Bash para armazenar o número da versão do Virtualbox , mas não consigo.

Meu script é:

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

eu tentei

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

tudo parece abrir a caixa virtual em vez da saída.
virtualbox --helpfornece o número da versão, mas a saída é muito longa para armazenar na variável e usar mais tarde.

Braiam
fonte

Respostas:

107

Para imprimir ou exibir a versão atual do VirtualBox, você deve usar o comando abaixo:

vboxmanage --version

que imprimirá a versão atual, como mostrado abaixo;

insira a descrição da imagem aqui

Consulte 8.2. Visão geral dos comandos no site oficial do VirtualBox para mais informações.


Para imprimir a versão usando o script, veja abaixo:

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

Espero que ajude.

AzkerM
fonte
11
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')e echo $(vboxmanage --version)qual a diferença? eles não são iguais?
souravc
@souravc - Em seu comentário aqui, você usa --version, que gera apenas uma linha e um campo; portanto, usar heade awkaparar é redundante e, sim, eles produzem o mesmo resultado. Em sua resposta abaixo, você usa --helpem vez de --version, caso em que heade awkcorte é realmente necessário ... mas você ainda obter informações menos precisas, como a versão encontrada via --helpsó é #. #. # Vs --versionque produz #. #. # r # (versão com informações de revisão).
DreadPirateShawn
@DreadPirateShawn você está correto, agora é desnecessário. Naquela época, vboxmanagecostumava vir com outras informações e foi por isso que propus isso. Você pode ver a edição , OP aceitou minha sugestão. Por que eu iria fazer as coisas :) complexo
souravc
@souravc - Ahhh ... engraçado como o contexto torna as coisas mais claras. :-P Então ... dica excelente. :-)
DreadPirateShawn
Desde o VBox 5.0, também é vbox-img --versionpossível imprimir a versão.
Kenorb 7/08
7

Você pode tentar isso,

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

ou

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

Como funciona

Passo 1

virtualbox --help

fornece uma saída longa dizendo muitas opções etc. Mas suas primeiras linhas são como,

Oracle VM VirtualBox Manager 4.3.6
(C) 2005-2013 Oracle Corporation
Todos os direitos reservados.
...

Passo 2

| head -n 1

|é chamado de tubo. Possui ótima aplicação em linha de comando. Passa toda a expressão para o próximo comando head. head -n 1imprime apenas a primeira linha. veja man headpara mais. Nesta fase, a saída é apenas

Oracle VM VirtualBox Manager 4.3.6

Etapa 3

| awk '{print $NF}'

Novamente as coisas restantes são passadas para awk. Nesse estágio, awka linha inteira é vista como combinações de poucos campos separados por espaço e imprime apenas o último campo da expressão acima. Então você obtém apenas a versão. Veja man awkpara mais.

souravc
fonte
Seria ótimo se você pudesse quebrar o comando e explicar o que cada parte faz.
Jobin
@Jobin plz see my edit.
souravc
2

você poderia conhecer a versão do pacote instalado com o dpkg e o grep com o piping

dpkg -l | grep virtualbox | awk '{print $3}'
Mina Eid
fonte
O que cada um desses comandos canalizados faz, por favor, seja detalhado.
Jobin
1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox --help
Oracle VM VirtualBox Manager 4.3.6

Então execute o comando abaixo,

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

Resultado:

4.3.6

awk '/Oracle/{ print $5 }'

Procura a linha que consiste na palavra Oracle.Se sim, o comando seleciona a quinta coluna nessa linha e a redireciona para a saída padrão.Se essa palavra não estiver presente em nenhuma linha, ela não exibirá nada.

Avinash Raj
fonte