Shell 脚本:我如何通过 virtualbox 的 cli 列出虚拟机并删除除“SaveThisOne”之外的所有内容?

问题描述 投票:0回答:1

Shell 脚本:我如何通过 virtualbox 的 cli 列出虚拟机并删除除“SaveThisOne”之外的所有虚拟机?

注意:以下行将删除所有 virtualbox 虚拟机:

VBoxManage list runningvms | awk '{print $2;}' | xargs -I vmid VBoxManage controlvm vmid poweroff
VBoxManage list vms | awk '{print $2;}' | xargs -I vmid VBoxManage unregistervm --delete vmid
arrays bash shell virtualbox
1个回答
0
投票

我认为

vmboxmanage list vms
的输出看起来像这样:

"SaveThisOne" {asdgfdasg}
"DeleteThis" {asdfasdfasdg}
"AndThis" {gasdfas}
"AndThisToo" {asdfas}

这是一个例子:

#!/bin/bash

# list all VMs
vms=$(vboxmanage list vms)

# Check every vm
while read -r line; do
    # Get VM name
    vm_name=$(echo "$line" | awk -F'"' '{print $2}')
    echo $vm_name

    # check name and delete
    if [ "$vm_name" != "SaveThisOne" ]; then
        # delete if name not like 
        vboxmanage unregistervm "$vm_name" --delete
    fi
done <<< "$vms"

我认为应该可以完成这项工作,但我还没有测试过,所以要小心

© www.soinside.com 2019 - 2024. All rights reserved.