У меня есть строка в моем bash-скрипте, подобная этой:
echo "`some_command`"
Теперь, some_command
выполняется в течение 1-2 минут и продолжает печатать предупреждения / сообщения в этом интервале.
Проблема заключается в том, что когда я выполняю свой сценарий bash, сценарий не выводится в течение 1-2 минут, а затем сразу отображает выходные данные после полного выполнения some_command
.
Как сделать так, чтобы мой скрипт bash выводил some_command
во время его выполнения? Есть ли способ сделать это?
Вы можете установить опцию xtrace
(обычно используется для отладки сценариев оболочки) перед запуском команды (нет необходимости использовать подстановку команды). Кроме того, не забудьте потом сбросить эту опцию.
set -x
some_command
set +x
Пример:
$ set -x; sleep 2 && echo fin; set +x
+ sleep 2
+ echo fin
fin
+ set +x
Если вы обнаружите, что вывод xtrace слишком загроможден, вы можете просто echo
заранее ввести название команды :
echo some_command
some_command
Заменить:
echo "`some_command`"
на:
some_command
Бэктики здесь бесполезны, поэтому с ними можно обойтись. Они были бы хороши, только если нужно было как-то суммировать результат после того, как он был завершен.