Как восстановить фоновое задание из предыдущей оболочки? [дубликат]

Моя настоящая проблема заключалась в том, что (в отличие от упрощенного примера в моем вопросе) я фактически обработал выходные данные jobs в функции , отделяя запущенные задания от остановленных.

Это мой код для Bash:

typeset runningJobs=$(jobs -r | wc -l)
typeset stoppedJobs=$(jobs -s | wc -l)

, который я перенес на оболочку Korn следующим образом:

typeset runningJobs=$(jobs | grep -c ' Running ')
typeset stoppedJobs=$(jobs | grep -c ' Stopped ')

Конвейер внутри подстановки команды $ (...) фактически вызывало выполнение заданий в подоболочке (и поэтому всегда не давало никаких результатов). Этого можно избежать, зафиксировав вывод в переменной. Следующая перезапись работает, как ожидалось:

typeset jobOutput=$(jobs)
typeset runningJobs=$(printf '%s\n' "$jobOutput" | grep -c ' Running ')
typeset stoppedJobs=$(printf '%s\n' "$jobOutput" | grep -c ' Stopped ')

Спасибо @StephenHarris за его ответ, который помог мне понять суть проблемы!

19
13.04.2017, 15:36
0 ответов

Теги

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