
ホスト システムで現在使用可能な仮想マシンの名前を抽出するには、次のコマンドを使用します。
vmslist=$(vboxmanage list vms | awk '{print $1}')
次のようにリスト内の VM を登録解除するために、このリストを 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