Em:
cmd1
cmd2
ou
cmd1; cmd2
Eles são executados sequencialmente.
Em
cmd1 && cmd2
Ou
cmd1 || cmd2
Eles são executados sequencialmente, mas a execução de cmd2
depende se cmd1
é bem-sucedido (para &&
) ou se falha (para ||
).
Em
cmd1 | cmd2
ou
cmd1 & cmd2
cmd1 |& cmd2 # ksh
coproc cmd1; cmd2 # bash/zsh
ou
cmd1 <(cmd2) # ksh/zsh/bash (also yash though with a different meaning)
Eles são executados simultaneamente. No primeiro caso, alguns shells só esperam por cmd2
antes de continuar com o resto do script, enquanto outros esperam por ambos. No segundo caso, os shells aguardam apenas que cmd2
( cmd1
seja executado de forma assíncrona (ou em segundo plano quando executado em um shell interativo)) e no terceiro por cmd1
( cmd2
assíncrono). / p>
Em:
< "$(cmd1)" x=$(cmd2) y=$(cmd3) cmd4 "$(cmd5)" > "$(cmd6)"
Os comandos são executados sequencialmente, mas a ordem depende do shell. Em qualquer caso, cmd4
será executado por último.
Em:
cmd1 =(cmd2) # zsh
Eles são executados sequencialmente ( cmd2
first).
Observe que, em todos esses casos, qualquer um desses comandos poderia iniciar outros processos. A concha não teria conhecimento deles, portanto não pode esperar por eles.