desarrollo-web-br-bd.com

Bash: ¿cómo ejecutar un comando después de que finalice el anterior?

Actualmente tengo un script.sh archivo con el siguiente contenido:

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

Quiero ejecutar los comandos uno por uno, cuando finalice el anterior. ¿Lo estoy haciendo de la manera correcta? Nunca antes había trabajado con Linux e intenté buscarlo, pero no encontré soluciones.

104
drogy

Sí, lo estás haciendo de la manera correcta. Los scripts de Shell ejecutarán cada comando secuencialmente, esperando que el primero termine antes de que comience el siguiente. Puedes unir comandos con ; o tenerlos en líneas separadas:

command1; command2

o

command1
command2

No hay necesidad de ; si los comandos están en líneas separadas. También puede elegir ejecutar el segundo comando solo si el primero salió correctamente. Para hacerlo, únete a ellos con &&:

command1 && command2

o

command1 &&
command2

Para obtener más información sobre los diversos operadores de control disponibles, consulte aquí .

151
terdon

En un caso repetitivo como este, recomendé usar un para bucle.

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

Esta es una versión de una línea adecuada para la línea de comando, pero también se puede usar en un script. Las llaves alrededor del nombre de la variable son necesarias cuando se incrusta una variable en una cadena sin espacios en blanco.

El bucle no solo envía las solicitudes en orden, sino que es más fácil de ajustar y reutilizar cuando sea necesario, sin tantas preocupaciones sobre los errores tipográficos.

13
Rache