Bonjour.
J'ai appris aujourd'hui à lancer des commandes de façon séquentielle avec cmd1 ; cmd2.
Ça m'est pratique avec mes spiders sous scrapy. Dans la console, en écrivant au clavier les instructions une par une, ça fonctionne très bien:
Mais comme en pratique j'aimerais lancer 150 fois différentes commandes de façon séquentielle, et je ne m'attarderais à épiloguer sur le pourquoi j'en ai besoin 150 fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part scrapy crawl spider -a arg1=machin -a arg2=bidule ; scrapy crawl spider -a arg1=jain -a arg2=makeba #etc
J'ai fait un script pour la console bash tel que:
avec 150 fois une instruction proche mais différente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #!/bin/bash scrapy crawl spider -a arg1=machin -a arg2=bidule ; scrapy crawl spider -a arg1=jain -a arg2=makeba ; #etc
Et vous remarquerez qu'il y a des sauts de lignes cette fois contrairement à lorsque je lançais dans la console en écrivant à la main quand je testais. Mais ça me renvoi une erreur propre à scrapy "scrapy crawl [options] <spider>
crawl: error: running 'scrapy crawl' with more than one spider is no longer supported
+ scrapy crawl spider -a arg1=jain -a arg2=makeba", ce qui signifie clairement que ça ne se fait pas façon séquentielle. Alors concernant les ";" je ne fut pas étonnée quand je lu ceci "Une série de commande peuvent être saisient sur la même ligne; c'est la liaison de commandes ; chaque commande est séparée des autres par un point virgule (";") et chacune est exécutée séquentielement les une après les autres." donc j'ai remplacé les ";" par des "&&" ne voyant pas de contre-indication. Mais j'ai la même erreur lorsque je lance
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part bash -x script.sh
Comment puis-je faire des commandes séquentielles dans un script?
Partager