Commentaires
- terdon ' réponse ci-dessous est excellent mais vous pouvez supprimer les points-virgules dans la version que vous ' avez montrée ci-dessus ainsi que les commandes sont exécutées dans lordre dans le script, chacune sur sa propre ligne. Le point-virgule est redondant sauf si vous mettez toutes les commandes sur une seule ligne.
Answer
Oui, vous « re le faire de la bonne façon. 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 ;
, soit les avoir sur des lignes séparées :
command1; command2
ou
command1 command2
Il ny a pas besoin de ;
si les commandes sont sur des lignes séparées. Vous pouvez également choisir dexécuter la deuxième commande uniquement si la première sest terminée correctement. Pour ce faire, joignez-les avec &&
:
command1 && command2
ou
command1 && command2
Pour plus dinformations sur les différents opérateurs de contrôle disponibles vous, voyez ici .
Commentaires
- Rappelez-vous quau lieu de
&&
, OP pourrait simplement ajouterset -e
au début du script. Bien sûr, ce nest pas un opérateur de chaînage de processus. - @didierc qui provoquera la fermeture du script en cas derreur, et produira également des tonnes de rapports de progression inutiles. Ce nest pas la même chose que de lier deux commandes spécifiques avec
&&
. - @polemon pas vraiment, non. Cest une question très simple posée par un utilisateur novice. Je ' ne voit pas lintérêt dajouter trop de détails. Notez que je nai même pas ' mentionner
||
. Je ne ' pas vraiment voir pourquoiwait
est pertinent ici, ce nest certainement pas nécessaire pour la simple tâche dexécuter une commande après lautre. Il ne serait nécessaire que pour un contrôle plus fin des processus. Nhésitez pas à soumettre une réponse bien sûr, mais je préfère ' garder la mienne simple. - @terdon wouldn ' t qui soit
set -v
ouset -x
plutôt queset -e
? - @didierc voir mon commentaire ci-dessus, je pensais à
set -x
, désolé.
Réponse
Dans un cas répétitif comme celui-ci, jai recommandé dutiliser une boucle for .
for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done
Il sagit dune version sur une ligne adaptée à la ligne de commande mais pouvant également être utilisée dans un script. Les accolades autour du nom de la variable sont nécessaires lors de lincorporation dune variable dans une chaîne sans espace.
La boucle envoie non seulement les requêtes dans lordre, mais est plus facile à modifier et à réutiliser en cas de besoin, sans autant de soucis. fautes de frappe.