현재 호스트 시스템에서 사용할 수 있는 가상 머신의 이름을 추출하는 다음 명령이 있습니다.
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