我正在尝试获取正在运行的vms的工作目录。我可以在多个bash命令中执行此操作,但我试图在单行中执行此操作。
这是我到目前为止所得到的。
VBoxManage list runningvms | grep vip-quickstart | VBoxManage showvminfo $(awk -F '' '{print $1}')
但是我收到了这个错误
awk:字段分隔符FS为空
如何将grep的结果传递给VBoxManage命令?
这是
的结果VBoxManage列表runningvms
"vip-quickstart_default_1431403025707_81359" {7b9a9c04-2bd9-4fd3-92c8-50293fbbca23}
"Some other running vms" {7b9a9c04-2bd9-4fd3-92c8-50293fbbca23}
在我通过grep
管道之后,我得到了这个
"vip-quickstart_default_1431403025707_81359" {7b9a9c04-2bd9-4fd3-92c8-50293fbbca23}
而且我认为我可以通过awk -F ' ' '{print $1}'
获取VMId,我会得到"vip-quickstart_default_1431403025707_81359"
我可以将其再次传输到
VboxManage showvminfo
如何在一个命令行中执行此操作?
答案 0 :(得分:1)
首先,你在第一个命令中给出了''空白。将空白作为字段分隔符是一个问题。如果space是字段分隔符,那么即使你没有提到-F'',awk也能正常工作。例如
VBoxManage list runningvms | grep vip-quickstart | VBoxManage showvminfo $(awk '{print $1}')
现在你想在awk的输出上运行命令VBoxManage showvminfo然后使用下面的代码: -
VBoxManage list runningvms | grep vip-quickstart | awk '{print $1}' | xargs VBoxManage showvminfo
OR
VBoxManage list runningvms | awk '/vip-quickstart/{print $1}' | xargs VBoxManage showvminfo
答案 1 :(得分:0)
看来你有一个带字段分隔符的类型,你在-F
参数后的两个引号之后没有空格。
尝试类似:
VBoxManage list runningvms | awk '/vip-quickstart/{print $0}'