No caso do seu script específico, nem Myscript
nem command D
será executado. Você definiu uma função C
, mas não está chamando.
A ordem de execução é:
-
command B
é executado até a conclusão. -
command E
é executado até a conclusão.
Se você chamasse C
, ele executaria Myscript
até a conclusão e, em seguida, executaria command D
na conclusão.
Tudo o que você invoca em um script de shell é executado na ordem em que é visto e é executado até a conclusão. Se você precisar executar algo em paralelo com outra coisa, deverá usar o controle de tarefa (confira como o caractere% am_and &
é usado para colocar tarefas em segundo plano). Um exemplo rápido:
A
B
Executa A
até terminar, depois executa B
até terminar. O script termina.
A &
B
Executa A
no plano de fundo e, em seguida, executa B em primeiro plano. O script de shell termina quando B
foi concluído. A
ainda pode estar em execução.
A &
B &
Executa A
no segundo plano e, em seguida (sem esperar que A
seja concluído), executa B
no segundo plano. O script termina imediatamente.
A &
B &
wait
Executa A
no segundo plano e, em seguida (sem esperar que A
seja concluído), executa B
no segundo plano. O script aguarda que A
e B
sejam concluídos antes de sair.