
У меня есть следующая команда для извлечения имен виртуальных машин, доступных в данный момент в хост-системе.
vmslist=$(vboxmanage list vms | awk '{print $1}')
Я передаю этот список в цикл for, чтобы отменить регистрацию виртуальных машин, которые находятся в списке, следующим образом:
for vm in $vmslist
do
echo $vm
vboxmanage controlvm $vm poweroff
vboxmanage unregistervm $vm --delete
done
Проблема в том, что команда vboxmanage жалуется на имена. Например, она говорит:
VBoxManage: error: Could not find a registered machine named '"SC-1"'
Я не понимаю, откуда взялись эти одинарные кавычки вокруг имени vm! Как мне решить эту проблему?
решение1
Так что просто уберите двойные кавычки.
vmslist=$(vboxmanage list vms | awk '{gsub(/"/, ""); print $1}')
И если имена могут содержать пробелы, то важно указать расширение.
for vm in $vmslist
do
echo "$vm"
vboxmanage controlvm "$vm" poweroff
vboxmanage unregistervm "$vm" --delete
done