
我有以下命令來提取主機系統中目前可用的虛擬機器的名稱。
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