Pages : 1
#1 Le 22/10/2008, à 05:28
- Drusselnahg
[Make] echo -e fais des misères
Bonjour , je souhaite pouvoir générer des petits fichiers texte (et source) avec Make.
La commande que j'utilisais pour cela dans un makefile sur d'autres distribs (Redhat, Gentoo) était la suivante:
regleX:
{tab}echo -e "\t commandeX" >> monFichier
J'ai voulu tester ceci sur une distribution Ubuntu, mais à ma surprise, quand j'ouvre monFichier, je vois:
"-e commandeX" ; l'option -e n'est pas prise comme une option mais comme du texte à afficher.
Ne maitrisant pas tout à fait Make, je souhaiterais savoir s'il y a un moyen de savoir quel shell est utilisé à chaque ligne de commande (ou si echo est interprété par Make : quand je tape echo -e dans `$SHELL` qui est un bon bash ceci marche correctement)
#2 Le 22/10/2008, à 09:24
- Drusselnahg
Re : [Make] echo -e fais des misères
Problème à priori résolu, make devait intercepter les echo pour fair je ne sais quelle blackmagic.
Je vais tout remplacer par `which echo` c'est crade mais je ne vois que ça pour le moment
#3 Le 22/10/2008, à 09:35
- ®om
Re : [Make] echo -e fais des misères
La différence vient du fait que bash et sh n'utilisent pas le même echo :
sh -c "echo -e 'ça va?\nbien'"
bash -c "echo -e 'ça va?\nbien'"
Pour éviter tout problème, il ne faut jamais utiliser echo dans les scripts, mais printf :
printf '%s\n%s\n' 'ça va?' 'bien'
Hors ligne
#4 Le 22/10/2008, à 10:00
- kordan
Re : [Make] echo -e fais des misères
C'est surtout une différence entre bash et dash (ce qui vaut pour ubuntu ne vaut pas pour toutes les distributions)
printf existe peut-être en dash, mais à ma connaissance il ne fait pas partie du bourne shell.
#5 Le 22/10/2008, à 10:01
- ®om
Re : [Make] echo -e fais des misères
Si, printf fonctionne partout, et de la même manière
Hors ligne
#6 Le 22/10/2008, à 10:10
- kordan
Re : [Make] echo -e fais des misères
Apparemment non :
Major Differences From The Bourne Shell
http://www.faqs.org/docs/bashman/bashref_122.html
The printf builtin is available to display formatted output (see section 4.2 Bash Builtin Commands).
Ce ne serait donc pas une commande intégrée du bourne shell (contrairement à bash et dash)