Jika Anda menulis skrip untuk mem-parsing perintah-perintah Vagrant, disarankan untuk mengurai output ramah-mesin ( --machine-readable
) yang lebih konsisten.
Formatnya adalah:
timestamp,target,type,data...
jadi Anda dapat mengimpornya sebagai file CSV, karena dipisahkan oleh koma.
Dengan shell, mungkin lebih sulit untuk diurai, misalnya:
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
Lihat: Vagrant - Output yang dapat dibaca mesin
Namun saya merasa lebih mudah untuk mem-parsing output standar, misalnya
while read id name provider state path; do
[ "$state" = "running" ] && vagrant suspend $id;
done < <(vagrant global-status)
Btw. Secara teoritis vagrant
perintah harus menerima ekspresi reguler untuk daftar VM yang ditangguhkan sesuai pos GH ini , misalnya:
vagrant suspend '*'
tetapi itu tidak bekerja dan ada bug # 7221 yang tertunda untuk memperbaikinya.
Tiket GitHub terkait: