Можно отправить сигнал во все процессы в группе процесса при определении отрицательного значения PID - PGID лидера сессии.
kill -STOP -"$subpid"
Примечание: Запускать программу в новом использовании сессии setsid make
. Но в Вашем случае я думаю, что это не нужно. Однако, если делают, выполняется рекурсивно, каждый экземпляр делают, мог бы быть его собственный лидер (я не уверен в этом).
Другая опция могла состоять в том, чтобы использовать killall
:
killall -STOP make
Различие между Ctrl+Z и уничтожает - ОСТАНОВКА:
То, что сказал Джиммурь. Его последний пример - самый близкий, который вы можете добраться до того, что вы пытаетесь в своем выражении трубопроводов.
Вот вариант на этой теме:
echo 'hello world'|echo $(read s;s=${s^^};echo ${s// /_})
Я был бы склонен использовать TR
, так как это довольно быстро.
echo 'hello world'|tr ' [:lower:]' '_[:upper:]'
Я полагаю, что это позор, что Bash не позволяет расширению вложенного параметра; ОТО, использование таких вложенных выражений может легко привести к коду, которое больно читать. Если вы Действительно не нуждаются в том, чтобы запускать как можно быстрее, лучше написать код, который легко читать, понимать и поддерживать, а не умный код, который является PITA для отладки. И если вы действительно делают , нужно сделать вещи на максимальной скорости, вы должны использовать скомпилированный код, не скрипт.
Так нельзя передавать расширения параметров. Когда вы ссылаетесь на x
, используя символ $
как в форме "${x}"
, то это должно быть имя реальной переменной, а не стандартный вход, по крайней мере, не в форме bash
. В zsh
вы можете выполнять вложенные замены параметров следующим образом:
$ x=''hello world'
$ echo ${${x// /_}:u}
HELLO_WORLD
(примечание: :u
для zsh
так же, как ^^
для bash
)
Гнездиться на бэше невозможно, и я думаю, то, о чем вы писали, - лучшее, что можно получить, но если по какой-то странной причине вам нужно вовлечь трубы в уравнение, то вы можете попробовать следующее:
$ echo 'hello world' | { read x; echo "${x// /_}"; } | { read y; echo "${y^^}"; }
HELLO_WORLD