COPROC: mudanças entre as edições

De Wiki Clusterlab.com.br
Ir para navegação Ir para pesquisar
(Criou página com '=Articles= *[https://daemoniolabs.wordpress.com/2011/07/19/entendendo-coprocessos-coproc-do-bash/ Entendendo Coprocessos (coproc) Do Bash]')
 
Sem resumo de edição
 
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Articles=
=Articles=
*[https://daemoniolabs.wordpress.com/2011/07/19/entendendo-coprocessos-coproc-do-bash/ Entendendo Coprocessos (coproc) Do Bash]
*[https://daemoniolabs.wordpress.com/2011/07/19/entendendo-coprocessos-coproc-do-bash/ Entendendo Coprocessos (coproc) Do Bash]
=Example=
Run a "bc" in a subshell and keep it running to call multiple times from a loop without the overhead to instantiate "bc" every single iteration.
<syntaxhighlight lang=bash>
coproc bc
for i in {1..10}
do
  echo $i'*'$i >&${COPROC[1]}
  read -u ${COPROC[0]} msg
  echo $msg
done
kill $COPROC_PID
</syntaxhighlight>
OUTPUT
<pre>
1
4
9
16
25
36
49
64
81
100
</pre>
-----
Run sed with buffering disabled, using coproc.
<syntaxhighlight lang=bash>
coproc stdbuf -o0 sed 's/.*/msg: &/'
for i in {1..10}
do
  echo $i >&${COPROC[1]}
  read -u ${COPROC[0]} msg
  echo $msg
done
kill $COPROC_PID
</syntaxhighlight>
OUTPUT
<pre>
msg: 1
msg: 2
msg: 3
msg: 4
msg: 5
msg: 6
msg: 7
msg: 8
msg: 9
msg: 10
</pre>

Edição atual tal como às 11h47min de 4 de dezembro de 2019

Articles

Example

Run a "bc" in a subshell and keep it running to call multiple times from a loop without the overhead to instantiate "bc" every single iteration.

coproc bc
for i in {1..10}
do 
  echo $i'*'$i >&${COPROC[1]}
  read -u ${COPROC[0]} msg
  echo $msg
done
kill $COPROC_PID

OUTPUT

1
4
9
16
25
36
49
64
81
100

Run sed with buffering disabled, using coproc.

coproc stdbuf -o0 sed 's/.*/msg: &/'
for i in {1..10}
do 
  echo $i >&${COPROC[1]}
  read -u ${COPROC[0]} msg
  echo $msg
done
kill $COPROC_PID

OUTPUT

msg: 1
msg: 2
msg: 3
msg: 4
msg: 5
msg: 6
msg: 7
msg: 8
msg: 9
msg: 10