2013-10-08 12 views
5

make interrompendo e segnalando un codice di errore di 12 dopo aver tentato di inviare a zip -u alcuni file.interrompe l'operazione perché zip termina con lo stato 12

Il codice di errore 12 è in realtà uno stato di uscita da zip che indica che non ha "nulla da fare".

Non capisco perché questo è uno stato di uscita diverso da zero. Non sarebbe più appropriato lasciare semplicemente zip senza fare nulla? Non sembra un problema reale se zip non ha nulla da fare.

Potrei sopprimerlo: dire a make di ignorare lo stato di uscita diverso da zero chiamando il numero -zip -u. Ma il problema con questo approccio è che 12 è l'unico stato di uscita che voglio ignorare. Tutti gli altri indicano problemi reali che mi indurranno a voler interrompere l'operazione make.

Forse potrei impostare una variabile uguale all'uscita da echo $? e quindi testare per 0 o 12 ma sembra klodgy farlo dopo ogni singola istruzione zip nel file .mk.

C'è un modo elegante per gestire questo?

+1

Niente di più elegante di quanto tu abbia già pensato. Puoi ignorare l'errore del tutto o controllare quelli specifici che ritieni non siano errori reali. – MadScientist

risposta

3

Err ... Come una soluzione rapida e sporca, è possibile utilizzare un wrapper shell:

#!/bin/ksh 

zip "[email protected]" 
rc=$? 

if [[ rc -eq 12 ]]; then 
    exit 0 
fi 

exit $rc 

In alternativa, si può fare quasi la stessa linea in Makefile ma sarà un po 'brutta (sarà deve essere una shell one-liner con duplicati $ segni, ecc.)