
Tenho o seguinte comando para extrair o nome das máquinas virtuais atualmente disponíveis no sistema host.
vmslist=$(vboxmanage list vms | awk '{print $1}')
Eu passo esta lista para um loop for para cancelar o registro de vms que estão na lista como segue:
for vm in $vmslist
do
echo $vm
vboxmanage controlvm $vm poweroff
vboxmanage unregistervm $vm --delete
done
O problema é que o comando vboxmanage reclama dos nomes. Por exemplo diz:
VBoxManage: error: Could not find a registered machine named '"SC-1"'
Não entendo de onde vêm essas aspas simples em torno do nome vm! Como posso resolver isso?
Responder1
Então apenas retire as aspas duplas
vmslist=$(vboxmanage list vms | awk '{gsub(/"/, ""); print $1}')
E se os nomes pudessem conter espaços em branco seria importante citar a expansão.
for vm in $vmslist
do
echo "$vm"
vboxmanage controlvm "$vm" poweroff
vboxmanage unregistervm "$vm" --delete
done