Comandos consecutivos

13

Estou correto ao supor que, quando ;une dois comandos em uma linha, o Bash sempre espera até que o primeiro comando seja encerrado antes de executar o segundo comando? E da mesma forma, em um script de shell contendo dois comandos diferentes em linhas diferentes, o Bash sempre espera até que o comando na primeira linha seja encerrado antes de executar o comando na segunda linha?

Se for esse o caso, existe uma maneira de executar dois comandos em uma linha ou em um script, para que o segundo comando não espere até que o primeiro comando seja concluído?

Além disso, linhas diferentes em um script de shell equivalem a linhas separadas unidas por ;ou &&?

EmmaV
fonte
1
Você pode estar interessado em Quais são os operadores de controle e redirecionamento do shell? .
terdon

Respostas:

25

Você está correto, os comandos nos scripts são executados sequencialmente por padrão.

Você pode executar um comando em segundo plano com o sufixo de &(um único e comercial).

Comandos em linhas separadas são equivalentes aos comandos associados ;por padrão. Se você disser ao seu shell para abortar em códigos de saída diferentes de zero ( set -e), o script será executado como se todos os comandos tivessem se juntado &&.

Stephen Kitt
fonte
2

Para responder sua segunda pergunta, você pode usar &para iniciar um comando em segundo plano e continuar com o script sem esperar que ele termine.

commandA & commandB

Se você executar isso em um terminal interativo (em vez de um script), poderá usar fgpara colocar o comando em segundo plano novamente em foco ou jobspara ver uma lista de tarefas em segundo plano.

rmelcer
fonte