VM を登録解除できません

VM を登録解除できません

ホスト システムで現在使用可能な仮想マシンの名前を抽出するには、次のコマンドを使用します。

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

関連情報