現在ホストシステムで使用可能な仮想マシンの名前を抽出するための次のコマンドがあります。
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