我想遍歷我正在運行的虛擬機,並只返回引號之間的內容。使用VBoxManage獲取正在運行的虛擬機列表
所以這個命令:
VBoxManage list runningvms
回報:
"UbuntuServer" {7ef01f8d-a7d5-4405-af42-94d85f999dff}
,我只希望它返回:
UbuntuServer
這是我迄今爲止(失敗):
#!/bin/bash
for machine in `cat VBoxManage list runningvms`; do
echo "$machine"
done
exit
「經典方法」是不好的做法,因爲'array =($(...))'方法;例如,兩者都將用當前目錄中的文件列表替換輸入中的單個標記「*」。請參見[不要閱讀用於](http://mywiki.wooledge.org/DontReadLinesWithFor),[BashPitfalls#50](http://mywiki.wooledge.org/BashPitfalls#hosts.3D.28_.24.28aws_ ... 29_.29)和[BashFAQ#1](http://mywiki.wooledge.org/BashFAQ/001) –
需要對此特定示例進行單詞分割,並且似乎不太可能匹配全局模式的VM名稱。 – Mat
我發生的最糟糕的數據丟失事件發生是因爲有人忽略了一個「不可能」的事件(一個程序創建文件「不可能」創建任何不匹配[0-9a-f] {24}的東西;一個錯誤在一個第三方庫中損壞了一個指針,將隨機垃圾傾倒到用於名稱的緩衝區中,其中包含一個空白包圍的'*'......並且一個shell腳本遍歷文件名以超過備份系統,然後被刪除*一切*)。 –