J'essaie de faire ce qui suit dans un Makefile. Pour une raison quelconque, je ne peux pas le faire fonctionner à droite:Make: Snippet ne fonctionne pas comme prévu
- Obtenez la première ligne d'un fichier
- Vérifiez si la ligne commence par «/»
- Si la ligne ne fonctionne pas, précédez un chemin à chaque ligne dans le fichier
Voici le code que j'ai:
if test $${$(shell head -n 1 ./root/lib/modules/$(KERNEL_VERSION)/modules.dep):0:1} -ne '/' then \
cat ./root/lib/modules/$(KERNEL_VERSION)/modules.dep | while read line; do echo "/lib/modules/$(KERNEL_VERSION)/$$line"; done > /tmp/modules.dep.new; \
cp /tmp/modules.dep.new ./root/lib/modules/$(KERNEL_VERSION)/modules.dep; \
rm /tmp/modules.dep.new; \
fi
la commande de la tête ne retourne rien. Si je cours seul, je reçois la première ligne du fichier.
Pas vraiment traiter votre problème, mais ce qui se passe si vous remplacez la tête avec "1Q sed"? Pourrait aider à affiner le problème. En outre, are = vous suare le cwd est où vous pensez qu'il est, et KERNEL_VERSION est défini? –
@Paul: Le chemin est presque certainement correct (cwd correct et KERNEL_VERSION défini) s'il peut obtenir la première ligne du fichier. – Beta
Pas forcément parce qu'il n'obtient la première ligne que lorsqu'il exécute la commande principale ("Si je cours seul, j'obtiens la première ligne du fichier.") Et quand il est exécuté dans le Makefile, il ne reçoit rien (" commande ne renvoie rien ") –