J'ai actuellement un script.sh
fichier avec le contenu suivant:
#!/bin/bash
wget -q http://exemple.com/page1.php;
wget -q http://exemple.com/page2.php;
wget -q http://exemple.com/page3.php;
Je veux exécuter les commandes une par une, lorsque la précédente se termine. Est-ce que je le fais de la bonne manière? Je n'ai jamais travaillé avec Linux auparavant et j'ai essayé de le rechercher, mais je n'ai trouvé aucune solution.
Oui, vous le faites correctement. Les scripts shell exécuteront chaque commande séquentiellement, en attendant que la première se termine avant que la suivante ne démarre. Vous pouvez soit joindre des commandes avec ;
ou les avoir sur des lignes distinctes:
command1; command2
ou
command1
command2
Il n'est pas nécessaire de ;
si les commandes sont sur des lignes distinctes. Vous pouvez également choisir d'exécuter la deuxième commande uniquement si la première s'est terminée avec succès. Pour ce faire, rejoignez-les avec &&
:
command1 && command2
ou
command1 &&
command2
Pour plus d'informations sur les différents opérateurs de contrôle à votre disposition, voir ici .
Dans un cas répétitif comme celui-ci, j'ai recommandé d'utiliser un pour boucle.
for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done
Il s'agit d'une version à une ligne adaptée à la ligne de commande, mais peut également être utilisée dans un script. Les accolades autour du nom de la variable sont nécessaires lors de l'incorporation d'une variable dans une chaîne sans espace.
La boucle envoie non seulement les requêtes dans l'ordre, mais est plus facile à modifier et à réutiliser si nécessaire, sans autant de soucis concernant les fautes de frappe.