Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1697 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [m4] interpretation des 'define' dans syscmd

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[m4] interpretation des 'define' dans syscmd

n°1158868
Olivier51
Posté le 28-08-2009 à 13:15:59  profilanswer
 

Hullo,
petit probleme avec le langage m4, je suis debutant dans ce langage ...
 
Mon besoin est simple, mon probleme est dans les fondements de ce langage, mais j'arrive pas a trouver la solution dans la doc ...
 
Voici mon script M4 :

Liste de mes fichiers dans MY_DIR :
changequote([[,]])
esyscmd([[find MY_DIR -type f -exec sh -c 'echo $1 | sed s/MY_DIR//' {} {} \;]])


 
... je dois changer les quotes comme j'ai besoin des ' dans ma command find.
 
Malheuresement le resultat de m4 -DMY_DIR=hello myscript.m4 :

Liste de mes fichiers dans hello :
find: ‘MY_DIR’: No such file or directory


 
comment faire pour que M4 remplace MY_DIR par sa valeur ?!? Ou bien une autre idee pour afficher ma liste de fichier en ramplacant une partie du texte ?!?
Thanks

mood
Publicité
Posté le 28-08-2009 à 13:15:59  profilanswer
 

n°1158872
Olivier51
Posté le 28-08-2009 à 13:27:41  profilanswer
 

Ca marche toujours pas, mais nouvelle update :

esyscmd('find MY_DIR -type f')
changequote([[,]])
esyscmd([[find MY_DIR -type f]])


 
... donne :

sh: find hello -type f: not found
 
 
find: ‘HELLO’: No such file or directory


 
Note: le dossier hello existe ...

n°1158933
Olivier51
Posté le 28-08-2009 à 16:19:33  profilanswer
 

Bon, j'y suis presque ... Mais j'ai encore besoin d'aide ...
 
Si je fais :


define('foo','find MY_DIR -type f')
esyscmd(foo)


J'ai bien le MY_DIR remplace correctement ...
 
Par contre, maintenant, je voudrais avoir :
 


define('foo','find MY_DIR -type f -exec sh -c 'echo $1 | sed s/MY_DIR//' {} {} \;')
esyscmd(foo)


Le hic, c'est que le $1 est pris comme un argument M4 et est donc remplacer par rien dans foo ... alors que j'en ai besoin pour mon find. Je trouve pas comment echapper le $1 ...

n°1159035
Olivier51
Posté le 28-08-2009 à 21:52:02  profilanswer
 

Bon, la correcte (ou une des correctes) solutions est:


define('foo','find MY_DIR -type f -exec sh -c 'echo ${1} | sed s/MY_DIR//' {} {} \;')
esyscmd(foo)  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [m4] interpretation des 'define' dans syscmd

 

Sujets relatifs
Interpretation des logs de Squid[PHP5][Apache2][MDK10.1] Problème d'interprétation du php ?
interpretation ' '[Shell] probleme avec l'interprétation
Plus de sujets relatifs à : [m4] interpretation des 'define' dans syscmd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR