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 --help
fornece o número da versão, mas a saída é muito longa para armazenar na variável e usar mais tarde.
bash
virtualbox
Braiam
fonte
fonte
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')
eecho $(vboxmanage --version)
qual a diferença? eles não são iguais?--version
, que gera apenas uma linha e um campo; portanto, usarhead
eawk
aparar é redundante e, sim, eles produzem o mesmo resultado. Em sua resposta abaixo, você usa--help
em vez de--version
, caso em quehead
eawk
corte é realmente necessário ... mas você ainda obter informações menos precisas, como a versão encontrada via--help
só é #. #. # Vs--version
que produz #. #. # r # (versão com informações de revisão).vboxmanage
costumava 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 :) complexovbox-img --version
possível imprimir a versão.Você pode tentar isso,
ou
Como funciona
Passo 1
virtualbox --help
fornece uma saída longa dizendo muitas opções etc. Mas suas primeiras linhas são como,
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 comandohead
.head -n 1
imprime apenas a primeira linha. vejaman head
para mais. Nesta fase, a saída é apenasEtapa 3
| awk '{print $NF}'
Novamente as coisas restantes são passadas para
awk
. Nesse estágio,awk
a 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. Vejaman awk
para mais.fonte
você poderia conhecer a versão do pacote instalado com o dpkg e o grep com o piping
fonte
Então execute o comando abaixo,
Resultado:
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.fonte