2011-06-28 7 views
0

Makefile:problème avec l'exécution du script shell de Makefile

$(shell ./test.sh) 

1ère expérience: test.sh

echo "hi" 

erreur que je reçois:

Makefile:1: *** missing separator. Stop. 

2ème expérience: test.sh

echo("hi") 

erreurs je reçois:

./test.sh: line 1: syntax error near unexpected token `"hi"' 
./test.sh: line 1: `echo("hi")' 

ne fait pas de sens ... il semble que 'Make' tente d'imposer sa syntaxe sur la coquille script, mais le script shell le veut aussi.

Répondre

5

essayez ./test.sh.

Dans la première expérience, le résultat est

hi 

Lorsque vous exécutez make, la ligne $(shell ./test.sh) évalue comme hi, qui font ne sait pas comment interpréter.

Dans la deuxième expérience,

./test.sh: line 1: syntax error near unexpected token `"hi"' 
./test.sh: line 1: `echo("hi")' 

Vous avez écrit un script shell qui ne dispose pas correcte syntaxe du shell, il tombe en panne. Il échoue si vous l'exécutez ou Make l'exécute.

+0

J'ai essayé cela, mais il dit: "Makefile: 1: *** séparateur manquant. ainsi que. Je ne sais pas quoi faire de ça .. – Blub

+0

Oh putain, apparemment je ne peux pas juste mettre cette ligne n'importe où, ça doit être une recette. Merci de votre aide! – Blub

+3

Pas exactement, vous pouvez utiliser $ (avertissement $ (shell ...)), avertissement est garanti pour produire une sortie nulle, alors vous pouvez utiliser (fausse) attribution AAA: = $ (shell ...) - que tout dépend de vos besoins particuliers. – pmod