Automatiser la création d'un script à partir d'une liste

Automatiser la création d'un script à partir d'une liste - Shell/Batch - Programmation

Marsh Posté le 11-07-2006 à 16:15:59    

Bonjour,
 
pour la bille en shell unix que je suis, j'aurais besoin d'un gros coup de main...
 
voilà, j'ai grosso modo 80 shell à créer. Ils vonts tous se ressembler, les seuls choses qui vont changer seront le nom du script bien sûr et 2 lignes dans le script.
 
Evidemment, j'aimerais autant éviter d'avoir à créer ces 80 scripts à la main.
 
 
Donc, j'aurais un fichier "liste.txt" avec ma liste à l'intérieur du type :
 
NOM1
NOM2
NOM3
...
 
 
je voudrais donc que ça me créé autant de fichier qu'il y a de lignes :
 
lance_NOM1.sh
lance_NOM2.sh
lance_NOM3.sh
 
 
et dans chacun de ces scripts j'aurais
 
#!/bin/ksh
###############################################################################
#
# FILE lance_NOM1.sh
#
# DESC
...patatipatata
...patatipatata
 
execute_fonction.sh $param1 $NOM1 $param3
 
 
etc. etc.
 
Merci d'avance pour vos réponses


---------------
Tant va la cruche à l'eau, qu'à la fin, j'ai soif... | Topic parapente | Moniteur ski et pararapente, Val d'Isère, Tarentaise
Reply

Marsh Posté le 11-07-2006 à 16:15:59   

Reply

Marsh Posté le 11-07-2006 à 16:43:39    

Et pourquoi pas un seul script auquel tu passes les paramètres adéquats ?


---------------
©2008 Bleuarff Corp.
Reply

Marsh Posté le 11-07-2006 à 16:54:50    

bah faut suivre un minimum l'existant...  
 
c'est pour ça que je veux créer un script auquel je passe en paramètre un fichier avec une liste de nom, et un modèle de script dans lequel j'irais modifier les 2 parties qui vont bien, et le tout sera enregistrer dans un nouveau fichier avec le nom qui va bien aussi (j'espère que je ne suis pas trop confus là...   :sweat: )


---------------
Tant va la cruche à l'eau, qu'à la fin, j'ai soif... | Topic parapente | Moniteur ski et pararapente, Val d'Isère, Tarentaise
Reply

Marsh Posté le 11-07-2006 à 17:09:54    

Vraiment impossible de le changer, ce modèle existant ?
 
Parce que, bon, 80 scripts... :sweat:
 
Sinon tu crées un script "template" avec des champs bien définis et identifiables (genre "%FILENAME%" ), et pour chaque jeu de variables de ta liste, tu crées un nouveau script à coup de cat|sed sur ton template...

Reply

Marsh Posté le 11-07-2006 à 18:11:07    

nan, c'est vraiment pas possible... au boulot c'est comme ça, et c'est tout (sont un peu bête mais bon...)
 
et en fouillant un peu, j'avais effectivement trouvé la fonction sed... ensuite, un petit coup de concaténationet de copier/coller sous excel, un copier/coller de mes 80 lignes sous unix, et ça marchait nickel.
 
merci bien en tt cas :jap:


---------------
Tant va la cruche à l'eau, qu'à la fin, j'ai soif... | Topic parapente | Moniteur ski et pararapente, Val d'Isère, Tarentaise
Reply

Marsh Posté le 11-07-2006 à 19:25:11    

cooltiti a écrit :

Bonjour,
 
pour la bille en shell unix que je suis, j'aurais besoin d'un gros coup de main...
 
voilà, j'ai grosso modo 80 shell à créer. Ils vonts tous se ressembler, les seuls choses qui vont changer seront le nom du script bien sûr et 2 lignes dans le script.
 
Evidemment, j'aimerais autant éviter d'avoir à créer ces 80 scripts à la main.
 
 
Donc, j'aurais un fichier "liste.txt" avec ma liste à l'intérieur du type :
 
NOM1
NOM2
NOM3
...
 
 
je voudrais donc que ça me créé autant de fichier qu'il y a de lignes :
 
lance_NOM1.sh
lance_NOM2.sh
lance_NOM3.sh
 
 
et dans chacun de ces scripts j'aurais
 
#!/bin/ksh
###############################################################################
#
# FILE lance_NOM1.sh
#
# DESC
...patatipatata
...patatipatata
 
execute_fonction.sh $param1 $NOM1 $param3
 
 
etc. etc.
 
Merci d'avance pour vos réponses


 
Bien que ce soit totalement idiot, voici une solution qui fait exactement ce que tu veux
 

#!/bin/sh
# Script idiot qui génère des scripts identiques à partir d'une ligne lue dans un fichier
 
# Stockage du fichier à lire dans le buffer n° 3
exec 3<file.txt
 
# Lecture du buffer 3 ligne par ligne
while read lig 0<&3
do
    # Ecriture du script
    (
         echo "#!/bin/ksh"
         echo "#################################"
         echo "#"
         echo "FILE lance_$lig.sh"
         echo "#"
         echo "# DESC"
         echo "...patatipatata"
         echo "...patatipatata"
         echo "execute_fonction.sh \$param1 $lig \$param3"
     ) > lance_$lig.sh
done


 

cooltiti a écrit :

nan, c'est vraiment pas possible... au boulot c'est comme ça, et c'est tout (sont un peu bête mais bon...)


 
Faut que tu leurs dises, au boulot, qu'ils arrêtent d'être stupides !!!
Tu leurs montres ce script

#!/bin/ksh
###############################################################################
#
# FILE lance_le_nom_que_tu_veux.sh
#
# DESC
...patatipatata
...patatipatata
 
execute_fonction.sh $param1 $1 $param3
 
 
etc. etc.


 
Et tu leur dis que ce script unique lance le nom que tu veux. Tu le lances juste en donnant le nom qui va bien en paramètre...

Message cité 1 fois
Message édité par Sve@r le 11-07-2006 à 19:31:35

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 11-07-2006 à 20:07:46    

Sve@r a écrit :


 
Faut que tu leurs dises, au boulot, qu'ils arrêtent d'être stupides !!!
Tu leurs montres ce script

#!/bin/ksh
###############################################################################
#
# FILE lance_le_nom_que_tu_veux.sh
#
# DESC
...patatipatata
...patatipatata
 
execute_fonction.sh $param1 $1 $param3
 
 
etc. etc.


 
Et tu leur dis que ce script unique lance le nom que tu veux. Tu le lances juste en donnant le nom qui va bien en paramètre...


 
ben justement...chaque script que je vais générer sera exactement de ce type là...
 
Mais je trouvais ça galère de faire 80 cp d'1 script, puis ensuite du vi pour modifier 2 lignes...
Autant faire un script qui génère ces fichiers justement.
 
Mais j'ai pu me faire un fichier du type
 
sed -e 's/AAAAA/nom_qui_fait_chier/' -e 's/BBBBB/NOM_QUI_FAIT_ENCORE_CHIER_MAIS_EN_MAJUSCULES/' fichier_template>nom_qui_fait_toujours_chier.sh
 
 
en préparant ça dans un fichier excel pour mes 80 lignes, ça m'a prit 3mn.
Ensuite, j'ai copié l'ensemble des lignes dans un script et lancé le script ensuite, et tout c'est passé comme je le souhaitais.
 
Mais merci encore pour ton aide    ;)


Message édité par cooltiti le 11-07-2006 à 20:08:54

---------------
Tant va la cruche à l'eau, qu'à la fin, j'ai soif... | Topic parapente | Moniteur ski et pararapente, Val d'Isère, Tarentaise
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed