Показать вывод команды, выполненной в bash, как она выполняется

У меня есть строка в моем bash-скрипте, подобная этой:

echo "`some_command`"

Теперь, some_command выполняется в течение 1-2 минут и продолжает печатать предупреждения / сообщения в этом интервале.

Проблема заключается в том, что когда я выполняю свой сценарий bash, сценарий не выводится в течение 1-2 минут, а затем сразу отображает выходные данные после полного выполнения some_command.

Как сделать так, чтобы мой скрипт bash выводил some_command во время его выполнения? Есть ли способ сделать это?

1
задан 4 December 2017 в 14:43

2 ответа

xtrace

Вы можете установить опцию xtrace (обычно используется для отладки сценариев оболочки) перед запуском команды (нет необходимости использовать подстановку команды). Кроме того, не забудьте потом сбросить эту опцию.

set -x
some_command
set +x

Пример:

$ set -x; sleep 2 && echo fin; set +x
+ sleep 2
+ echo fin
fin
+ set +x

echo

Если вы обнаружите, что вывод xtrace слишком загроможден, вы можете просто echo заранее ввести название команды :

echo some_command
some_command
1
ответ дан 4 December 2017 в 14:43

Заменить:

echo "`some_command`"

на:

some_command

Бэктики здесь бесполезны, поэтому с ними можно обойтись. Они были бы хороши, только если нужно было как-то суммировать результат после того, как он был завершен.

1
ответ дан 4 December 2017 в 14:43

Другие вопросы по тегам:

Похожие вопросы: