Я пытаюсь сделать что-то, что включает в себя сценарии, вызывающие другие сценарии в подоболочках для захвата их вывода.
Один из сценариев должен иметь побочный эффект запуска фонового процесса. Все это работает при непосредственном выполнении, но блокируется при вызове в подоболочке.
В качестве отдельного примера рассмотрим следующие 2 сценария:
test1.sh
#!/bin/bash
echo $(./test2.sh)
test2.sh
#!/bin/bash
(yes > /dev/null ; echo 'yes killed') &
echo success
Когда я запускаю test2.sh
сам по себе, я получаю ожидаемый результат "успеха" на терминале и yes
работающий в фоновом режиме. Killing yes
печатает "yes kill" в терминал, как и ожидалось.
Когда я запускаю test1.sh
я ожидаю, что получу то же самое поведение, но на самом деле происходит то, что терминал зависает до тех пор, пока я не убью yes
после чего на терминал выводится "успех да уничтожен" .
Что я могу изменить в этих сценариях, чтобы получить одинаковое поведение при вызове любого из них?
Предполагается, что оценка подоболочки в test1.sh
будет храниться в переменной для последующего использования. Фоновый процесс, запущенный в test2.sh
должен проходить после выполнения любого сценария.