Передача по каналу обработки строк удара

Можно отправить сигнал во все процессы в группе процесса при определении отрицательного значения PID - PGID лидера сессии.

kill -STOP -"$subpid"

Примечание: Запускать программу в новом использовании сессии setsid make. Но в Вашем случае я думаю, что это не нужно. Однако, если делают, выполняется рекурсивно, каждый экземпляр делают, мог бы быть его собственный лидер (я не уверен в этом).

Другая опция могла состоять в том, чтобы использовать killall:

killall -STOP make

Различие между Ctrl+Z и уничтожает - ОСТАНОВКА:

  • Ctrl-Z на самом деле отправляет TSTP, который может быть заблокирован.
  • ОСТАНОВКА не может быть заблокирована.
9
26.10.2014, 06:39
2 ответа

То, что сказал Джиммурь. Его последний пример - самый близкий, который вы можете добраться до того, что вы пытаетесь в своем выражении трубопроводов.

Вот вариант на этой теме:

echo 'hello world'|echo $(read s;s=${s^^};echo ${s// /_})

Я был бы склонен использовать TR , так как это довольно быстро.

echo 'hello world'|tr ' [:lower:]' '_[:upper:]'

Я полагаю, что это позор, что Bash не позволяет расширению вложенного параметра; ОТО, использование таких вложенных выражений может легко привести к коду, которое больно читать. Если вы Действительно не нуждаются в том, чтобы запускать как можно быстрее, лучше написать код, который легко читать, понимать и поддерживать, а не умный код, который является PITA для отладки. И если вы действительно делают , нужно сделать вещи на максимальной скорости, вы должны использовать скомпилированный код, не скрипт.

9
27.01.2020, 20:05

Так нельзя передавать расширения параметров. Когда вы ссылаетесь на 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
7
27.01.2020, 20:05

Теги

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