>>VAR=$(shell echo *.c)
>>toto:
>> echo $(VAR)
>
>
> En fait, le soucis vient quand la réponse n'est pas un bloc de caractères...
>
> Si tu as des espaces, des lignes multiples, etc., cela ne fonctionne pas.
>
Le pb vient plutot des lignes multiples, puisque l'exemple ci-dessus
retourne tres bien la liste des fichiers.
Par contre si je fais
VAR=$(shell cat hello.c)
il faut aussi que je rajoute des "" dans la commande echo (sinon le '#'
de #include qui commence mon hello.c est interprete comme un commentaire
shell)
j'ai donc:
VAR=$(shell cat hello.c)
toto:
echo "$(VAR)"
et make toto me donne:
echo "#include <stdio.h> int main() { printf("hello\n"); return
0; }"
#include <stdio.h> int main() { printf(hellon); return 0; }
Ca devient complique a cause des caracteres speciaux contenus dans le
fichier qui sont interpretes par le shell et si je mets des ' au lieu
des "", ca donne:
echo '$(VAR)'
et make toto:
echo '#include <stdio.h> int main() { printf("hello\n"); return
0; }'
#include <stdio.h> int main() { printf("hello\n"); return 0; }
ce qui est mieux, mais perd toujours les sauts de ligne
Christophe.