Команды Bash с перенаправленным выводом не завершаются

Команды Bash с перенаправленным выводом не завершаются

У меня есть очень простой скрипт bash с несколькими командами, выполняемыми последовательно. Вывод каждой команды перенаправляется в свой собственный файл журнала. Что-то вроде этого

(command --param a > sys.a.log 2>&1)
(command --param b > sys.b.log 2>&1)
(command --param c > sys.c.log 2>&1)

Теперь, когда я запускаю этот скрипт, он запускается отлично, но когда первая команда завершается (файл журнала показывает, что последняя строка программы выполнена), процесс не завершается. Мне приходится вручную убивать его, прежде чем скрипт перейдет к следующей строке (и создаст sys.b.log).

Ожидаете ли вы, что этот скрипт будет вести себя именно так (я не очень разбираюсь в bash), или это неожиданное поведение, и мне следует поискать проблему в другом месте? Если это имеет значение, то фактическая команда — «java» с кучей параметров.

решение1

Хорошая идея — использовать ловушки выхода в ваших скриптах bash.

Некоторые фрагменты:http://redsymbol.net/articles/bash-exit-traps/

Также ознакомьтесь с этой статьей о написании надежных скриптов оболочки и о том, на что следует обращать внимание:http://www.davidpashley.com/articles/writing-robust-shell-scripts/

Связанный контент