Vagrant komutlarını ayrıştırmak için komut dosyaları yazıyorsanız --machine-readable
, daha tutarlı olan makine dostu çıktıyı ( ) ayrıştırmanız önerilir .
Format:
timestamp,target,type,data...
böylece virgülle ayrıldığından CSV dosyası olarak içe aktarabilirsiniz.
Kabuk ile, örneğin ayrıştırmak daha zor olabilir, örneğin:
for id in $(vagrant global-status --machine-readable | cut -d, -f5 | grep -B3 running | egrep -o "[0-9a-f]{7}"); do
vagrant suspend $id;
done
Bakınız: Vagrant - Makine tarafından okunabilir çıkış
Ancak standart çıktının ayrıştırılmasını daha kolay buluyorum, örneğin
while read id name provider state path; do
[ "$state" = "running" ] && vagrant suspend $id;
done < <(vagrant global-status)
Btw. Teorik olarak vagrant
bu GH uyarınca askıya VM'lerin listesi için normal bir ifade kabul etmelidir komutu sonrası , örneğin:
vagrant suspend '*'
fakat işe yaramıyor ve düzeltmek için bekleyen bir # 7221 hatası var.
İlgili GitHub biletleri: