Вам не нужно подстановку процессов, чтобы получить этот эффект. Попробуйте это:
( echo foo | cat & )
вы получите большой результат (без бара
; Я оставлю это как упражнение) и по той же причине. В обоих случаях CAT
начинается как фоновая задача. В моей линии здесь это явный. В случае замещения процесса, это также явное - это отдельный процесс, прикрепленный к файловому дескриптору имени - но это, возможно, не так очевидно.
Детский процесс не обязательно прекращается до Bash
, распечатывает следующую подсказку. И поскольку его вывод буферизован, он ничего не выводится, пока оно не заканчивается. В этот момент Bash только что напечатал $
на Стдерре, и теперь фоновый процесс выходит после печати Foo
и новая линия.
This worked for me
myvar="present value: 4"
expr match "$myvar" '.*\([0-9]\)'
Output:
4
Согласно странице эксперта
, соответствует
- для привязанного образца REGEXP в STRING
. REGEX привязан к обоим концам STRING, поэтому он не может просто соответствовать подстроке.