Моя настоящая проблема заключалась в том, что (в отличие от упрощенного примера в моем вопросе) я фактически обработал выходные данные 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 за его ответ, который помог мне понять суть проблемы!