У меня довольно длинный сценарий bash, который вызывает довольно много внешних команд (git clone
, wget
, apt-get
и др.), Которые печатают много материала на стандартный вывод.Как управлять многословием журналов внутри сценария оболочки?
Я хочу, чтобы у сценария было несколько вариантов подробностей, поэтому он печатает все из внешних команд, сводную версию (например, «Установка зависимостей ...», «Компиляция ...» и т. Д.) Или ничего вообще. Но как я могу это сделать без загромождения всего кода?
Я думал о возможных решениях для этого: нужно создать функцию-обертку, которая запускает внешние команды и печатает то, что необходимо для стандартного вывода, в зависимости от параметров, заданных в начале. Это проще реализовать, но это означает добавление большого количества лишнего беспорядка в код.
Другим решением является отправка всего вывода на пару внешних файлов и при анализе аргументов в начале скрипта, выполняющем tail -f
в этом файле, если указана подробность. Это было бы очень легко реализовать, но мне кажется, что он довольно взломан, и я обеспокоен его влиянием на производительность.
Какой из них лучше? Я также открыт для других решений.
Рассматривали ли вы с помощью 'установить -x '? Вызовите эту команду в верхней части вашего скрипта, и каждая последующая команда будет эхом. Вы можете отключить его с помощью 'set + x'. –
Кроме того, вы можете использовать 'set -e', чтобы прервать скрипт, когда какая-либо команда выходит с ненулевым статусом. –
Нет, это не то, что мне нужно. Я знаю, какие команды я запускаю, я просто хочу, чтобы мой скрипт распечатывал все, что они выводят, или нет, в зависимости от некоторых параметров. Это скорее вещь пользователя, чем фактический код. – Ocab19