Это должно сработать.
printf "%s\0" "${VALUE_LIST[@]}" | xargs -0 sh -c 'command --param "$@"' command_name
Распечатайте значения в xargs
и используйте ноль в качестве разделителя. Затем xargs
вызывает sh
, а sh
выполняет команду со значениями в качестве аргументов. Последний фрагмент, имя_команды
, будет представлять команду под указанным вами именем. Это обязательно в этой конструкции, иначе команда не получит первое значение из списка «$ @»
.
Для виртуальных машин, таких как VMWare / VirtualBox, вы можете создать моментальный снимок, как предложил Стивен,
Но если вы не используете виртуальную машину, вы можете использовать докер, начните читать отсюда
PS Если вы беспокоитесь об установке и настройке программного обеспечения, просто удалите программное обеспечение и восстановите файлы конфигурации, которые должны работать.
Некоторое время назад я написал в блоге запись о том, как сделать что-то в этом роде с помощью Ansible и короткого Perl-скрипта:
https://grep.be/blog/en/computer/Resetting_a_Raspberry_Pi_to_default_using_Ansible
Не беспокойтесь о бите 'raspberry pi' в URL-адресе - описанный метод действительно работает для любой системы.
Идея этого метода заключается в том, что вы используете белый список, чтобы описать для себя, как выглядит «пустая» система в Perl-скрипте, а затем вы заставляете его выводить факты Ansible для лишних вещей, которые он находит в системе. Затем вы можете использовать Ansible для удаления этих вещей. Версия в моем блоге заботится только о пакетах, но этот метод также можно расширить для просмотра файлов, пользователей или других вещей.