Supprimer l’écho de l’invocation de commande dans le fichier makefile?

J’ai écrit un programme pour une tâche qui est censée imprimer sa sortie sur stdout. La spécification d’affectation nécessite la création d’un Makefile qui, lorsqu’il est make run > outputFile comme make run > outputFile doit exécuter le programme et écrire la sortie dans un fichier qui possède une empreinte SHA1 identique à celle donnée dans la spécification.

Mon problème est que mon makefile:

 ... run: java myprogram 

imprime également la commande qui exécute mon programme (par exemple, java myprogram) dans le fichier de sortie, de sorte que mon fichier inclue cette ligne supplémentaire provoquant une erreur dans l’empreinte.

Existe-t-il un moyen d’exécuter une commande sans invocation de commande renvoyant à la ligne de commande?

Ajoutez @ au début de la commande pour indiquer à gmake de ne pas imprimer la commande en cours d’exécution. Comme ça:

 run: @java myprogram 

Comme Oli l’a suggéré, c’est une caractéristique de Make et non de Bash.

D’autre part, Bash ne fera jamais écho aux commandes en cours d’exécution à moins que vous ne lui demandiez de le faire explicitement (c’est-à-dire avec l’option -x ).

Encore plus simple: make -s (mode silencieux)!

L’effet de précéder la commande avec un @ peut être étendu à une “section” en étendant la commande en utilisant une barre oblique inverse sur la ligne. Si une commande phony est souhaitée pour supprimer la sortie, on peut commencer la section avec @printf “” \