Если вы пишете скрипты для разбора команд Vagrant, рекомендуется разбирать машинный вывод (--machine-readable), который более согласован.
Формат:
timestamp,target,type,data...
, поэтому вы можете импортировать его как CSV-файл, так как он разделен запятыми.
С оболочкой, вероятно, сложнее разобрать, например:
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
См. Vagrant - Машиночитаемый выход
Однако мне легче анализировать стандартный вывод, например
while read id name provider state path; do
[ "$state" = "running" ] && vagrant suspend $id;
done < <(vagrant global-status)
Btw. Теоретически команда vagrant должна принимать регулярное выражение для того, чтобы список виртуальных машин приостанавливался в соответствии с этим GH Vagrant - Машиночитаемый вывод , например:
vagrant suspend '*'
, но он не работает
Связанные билеты GitHub:
GH # 7220: Предоставить дополнительную информацию опции для фильтрации списка для бродячего глобального статуса. GH: # 7221: Реализовать - все для приостановления или бродяги приостановить - все.