如何从CLI检查virtualbox版本


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而不是输出。
virtualbox --help给出版本号,但是输出太长而无法存储在变量中,以后再使用。

Answers:


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 2014年

@souravc-在这里,您使用--version,仅输出一行和一个字段;因此使用headawk修剪是多余的,是的,它们输出相同的结果。在下面的答案中,您使用--help而不是--version,在这种情况下headawk确实有必要进行修整...但是您仍然会获得不太精确的信息,因为通过找到的版本--help只有#。#。#,--version而产生的是#。#。# r#(带有修订信息的版本)。
DreadPirateShawn 2015年

@DreadPirateShawn您现在是正确的,没有必要了。当时vboxmanage曾经附带一些其他信息,这就是为什么我提出这一点。您可以看到编辑,OP接受了我的建议。为什么我会让事情变得复杂:)
souravc

@souravc-啊...有趣的是上下文如何使事情变得更清晰。:-P所以...很棒的提示。:-)
DreadPirateShawn

从VBox 5.0开始,vbox-img --version也可以打印版本。
kenorb 2015年

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

|称为管道。它在命令行中有很大的应用。它将整个表达式传递给下一个命令headhead -n 1仅打印第一行。看到man head更多。在此阶段,仅输出

Oracle VM VirtualBox管理器4.3.6

步骤-3

| awk '{print $NF}'

剩下的东西再次传递给awk。在此阶段,awk将整行视为由空格隔开的几个字段的组合,并仅打印上述表达式的最后一个字段。因此,您仅获得版本。查看man awk更多。


如果您可以分解命令并解释每个部分的功能,那就太好了。
jobin 2014年

@Jobin plz看到我的编辑。
souravc 2014年

2

您可能知道dpkg和grep与管道一起安装的软件包的版本

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

这些管道命令的每个功能是什么,请详细说明。
jobin 2014年

1
avi @ avi-IdeaPad-Z500:〜$ virtualbox-帮助
Oracle VM VirtualBox管理器4.3.6

因此,运行以下命令,

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

输出:

4.3.6

awk '/Oracle/{ print $5 }'

搜索由单词组成的行Oracle。如果是,那么该命令将拾取该行的第五列并将其重定向到标准输出。如果任何行上都没有该单词,则不显示任何内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.