J'écris un script shell qui itère sur un ensemble de variables, édite un fichier source ligne par ligne en fonction de la valeur d'itération courante, puis refait, et enfin appelle le juste binaire compilé. Après l'exécution, l'ancienne ligne est restaurée.Appeler make à partir d'un script bash ne fera pas
Voici un extrait:
#!/bin/sh
for i in 0..4; do
perl -i -pe "s/.*/{SUBS[$i]}/ if $. == ${LINE[$i]}" ${SOURCE}
make
./bin/myTool
perl -i -pe "s/.*/\/\/{SUBS[$i]}/ if $. == ${LINE[$i]}" ${SOURCE}
done
Fondamentalement, j'ai environ 10 mutuellement exclusifs #define
dans un fichier source C++, et j'expérimente les effets de chacun. Puisque je suis fainéant, j'aimerais en faire un processus automatisé, et je me suis retrouvé ici.
Parfois, il arrive que le shell dit:
`make: Nothing to be done for 'all'`
Maintenant, j'ai essayé de diff
le fichier avant et après chaque instruction perl
et les fichiers ne semble correct ... Je ne peux pas comprendre pourquoi cela se produit et comment le faire se comporter correctement.
Une idée?
Merci d'avance.
Correction, et l'erreur était complètement à moi. J'ai ajouté l'instruction 'sleep' mais certainement au mauvais endroit ... juste le mettre au début de la boucle (comme indiqué correctement dans les réponses) et tout s'est bien passé. Merci! – Daniele
Dernière version du script: au lieu de m'endormir, j'ai préféré 'touch -t 1010101010 $ {SOURCE} $ {OBJECT} '... Moins de temps perdu! :) – Daniele