Comandos consecutivos

8
Estou correto em assumir que quando ; une dois comandos em uma linha, o Bash sempre espera até que o primeiro comando tenha saído antes de executar o segundo comando? E da mesma forma, em um shell script contendo dois comandos diferentes em linhas diferentes, Bash sempre espera até que o comando na primeira linha tenha saído antes de executar o comando na segunda linha?

Se este for 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 && ?

    
por EmmaV 12.02.2015 / 17:17

2 respostas

17

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

Você pode executar um comando em segundo plano, sufixando-o com & (um único e comercial).

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

    
por 12.02.2015 / 17:19
1

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 fg para colocar o comando em segundo plano de volta no foco ou jobs para ver uma lista de tarefas em segundo plano.

    
por 12.02.2015 / 19:16

Tags