У меня интересная ситуация. Весь код здесь представляет собой пример функционального псевдокода точной проблемы, с которой я сталкиваюсь, поэтому не шутите о назначении вывода date
. Я действительно хочу захватить вывод более медленной функции, зависящей от ресурсов, но date
хорошо работает, чтобы показать функциональное препятствие, с которым я столкнулся.Получение идентификатора процесса и присвоение переменной в скрипте Bash
Я пишу Баш скрипт, где я хочу, чтобы назначить выход процесса переменной следующим образом:
RESPONSE=$(nice -n 19 date);
Теперь это дает мне RESPONSE
в хорошей переменной, не так ли? Хорошо, что, если я хочу получить идентификатор процесса функции, вызванной в пределах $()
? Как мне это сделать? Я предполагал, что это будет работать:
RESPONSE=$(nice -n 19 date & PID=(`jobs -l | awk '{print $2}'`));
который не дает мне идентификатор процесса в переменной PID
, но я больше не получить выходной сигнал, отправляемый в RESPONSE
.
Код, который я использую в качестве функционального примера, это. Этот пример работает, но не PID
; да я не назначая PID
но опять-таки это пример:
RESPONSE=$(nice -n 19 date);
wait ${PID};
echo "${RESPONSE}";
echo "${PID}";
Этот пример дает мне PID
, но не RESPONSE
:
RESPONSE=$(nice -n 19 date & PID=(`jobs -l | awk '{print $2}'`));
wait ${PID};
echo "${RESPONSE}";
echo "${PID}";
Каждый знает, как я могу получить значение RESPONSE
с PID
также?
Это выглядит так, как будто вы решили КАК что-то сделать, но что-то неясно. Нам нужно описание того, что вам нужно делать, а не то, как вы думали, что вам следует это делать. Предположим, что кто-то здесь уже знает, как делать то, что вы действительно хотите, а не то, что вы говорите нам, что думаете, что вам следует делать ... так что если вы скажете нам, тогда вы получите ответ, который будет работать. Где мы сейчас не помогаем вам вообще. –
Джим, я хочу сделать именно то, что показывает сценарий. Я хочу получить идентификатор процесса, а затем сценарий ждет завершения этого процесса, прежде чем переходить к следующему шагу.Но, если то, что говорит Луис, истинно, возможно, просто обернуть функцию в '$()' достаточно, чтобы гарантировать, что следующие шаги не будут выполняться до тех пор, пока не будет назначена переменная? – JakeGould