desenv-web-rp.com

Bash - como executar um comando após o término anterior?

Atualmente eu tenho um script.sh arquivo com o seguinte conteúdo:

#!/bin/bash
wget -q http://exemple.com/page1.php;
wget -q http://exemple.com/page2.php;
wget -q http://exemple.com/page3.php;

Eu quero executar os comandos um por um, quando o anterior terminar. Estou fazendo isso da maneira certa? Eu nunca trabalhei com Linux antes e tentei procurá-lo, mas não encontrei soluções.

104
drogy

Sim, você está fazendo isso da maneira certa. Os scripts de shell executarão cada comando seqüencialmente, aguardando o primeiro terminar antes que o próximo seja iniciado. Você pode unir comandos com ; ou tê-los em linhas separadas:

command1; command2

ou

command1
command2

Não há necessidade de ; se os comandos estiverem em linhas separadas. Você também pode optar por executar o segundo comando apenas se o primeiro sair com êxito. Para fazer isso, junte-se a eles com &&:

command1 && command2

ou

command1 &&
command2

Para obter mais informações sobre os vários operadores de controle disponíveis, consulte aqui .

151
terdon

Em um caso repetitivo como esse, eu recomendo usar um for loop.

for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done

Esta é uma versão de uma linha adequada para a linha de comando, mas também pode ser usada em um script. As chaves ao redor do nome da variável são necessárias ao incorporar uma variável em uma sequência sem espaço em branco.

O loop não apenas envia as solicitações em ordem, mas é mais fácil ajustar e reutilizar quando necessário, sem tantas preocupações com erros de digitação.

13
Rache