Zsh prompt - проверка наличия фоновых заданий

Я настраиваю свое приглашение zsh и нашел следующее, чтобы проверить, есть ли фоновые задания:

if [[ $(jobs | wc -l) -gt 0 ]]; then # has background job(s)
    number_jobs='J:${cyan}%j${no_color}'
else # no background job(s)
    number_jobs=""
fi

Проблема, с которой я сталкиваюсь, заключается в том, что код оценивается только тогда, когда я открываю новый сеанс, а не после того, как каждая команда делает это бесполезным. Как я могу переоценить number_jobs после каждой команды?

Ответ 1

zsh имеет специальную последовательность запросов, такую ​​как C-тернарный оператор. Нижеследующая конструкция означает, что если есть одно или несколько заданий, напечатайте их номер или ничего не напечатайте:

 %(1j.%j.)