2013-06-14 19 views
5

Sono nuovo allo script di shell. Voglio chiamare un elenco di file make dallo script Shell in un ordine particolare. Per ogni makefile voglio ottenere il risultato (make è successo o fallimento). Se qualche errore voglio interrompere l'esecuzione dello script. Se è successo, devo eseguire il prossimo makefile.Chiamare makefile da Shell Script

+0

Come "make1 && make2 && make3'? – pfnuesel

+0

Oppure 'make -f makefile1 && make -f makefile2 && ...' – devnull

risposta

6

Un linguaggio comune è quello di creare uno script di shell con set -e; ciò causerà l'uscita dello script al primo errore.

#!/bin/sh 
set -e 
make -f Makefile1 
make -f Makefile2 
: 

Se avete bisogno di un maggiore controllo sulla sceneggiatura nel complesso, forse rimuovere set -e e invece esplicitamente uscita make fallimento:

make -f Makefile1 || exit 
make -f Makefile2 || exit 

Per ridurre la duplicazione del codice, creare un ciclo:

for f in Makefile1 Makefile2; do 
    make -f "$f" || exit 
done 

Giusto per essere espliciti, lo || "o" e && "e" i connettivi sono abbreviazione di

if make -f Makefile1; then 
    : "and" part 
else 
    : "or" part 
fi 

Infine, il comportamento che descrivi sembra esattamente come si comporta Make. Forse un Makefile di primo livello sarebbe in realtà una soluzione adatta al tuo scenario?

.PHONY: all 
all: 
    $(MAKE) -f Makefile1 
    $(MAKE) -f Makefile2 
2
make -f makefile1 
make -f makefile2 

l'esecuzione di make file in ordine

di salvare l'output di ogni makefile

make -f makefile1 >> output1 
make -f makefile2 >> output2 

per controllare il risultato dopo ogni file

make -f makefile1 >> output1 

fare dopo questo script linea utilizzare
echo $? questo in combinazione con if. se echo $? risultato zero quindi il tuo successo quindi se echo $? risultato zero quindi esegui il file successivo altro saggio uscita

+0

Potrebbe essere utile anche registrare gli errori, ad esempio 'make -f makefile1 & >> output1' – pfnuesel