
Ich habe den folgenden Befehl, um den Namen der aktuell im Hostsystem verfügbaren virtuellen Maschinen zu extrahieren.
vmslist=$(vboxmanage list vms | awk '{print $1}')
Ich übergebe diese Liste an eine For-Schleife, um die in der Liste enthaltenen VMs wie folgt abzumelden:
for vm in $vmslist
do
echo $vm
vboxmanage controlvm $vm poweroff
vboxmanage unregistervm $vm --delete
done
Das Problem ist, dass der Befehl vboxmanage die Namen bemängelt. Dort steht beispielsweise:
VBoxManage: error: Could not find a registered machine named '"SC-1"'
Ich verstehe nicht, woher diese einfachen Anführungszeichen um den Namen der VM kommen! Wie kann ich das lösen?
Antwort1
Entfernen Sie einfach die Anführungszeichen
vmslist=$(vboxmanage list vms | awk '{gsub(/"/, ""); print $1}')
Und wenn die Namen Leerzeichen enthalten könnten, wäre es wichtig, die Erweiterung in Anführungszeichen zu setzen.
for vm in $vmslist
do
echo "$vm"
vboxmanage controlvm "$vm" poweroff
vboxmanage unregistervm "$vm" --delete
done