2013-10-08 13 views
5

make zatrzymują się i zgłaszają kod błędu 12 po próbie pobrania niektórych plików z zip -u.przerwij wykonywanie, ponieważ zjazdy zip kończą się o statusie 12

Kod błędu 12 jest w rzeczywistości stanem wyjścia z suwaka, co oznacza, że ​​"nie ma nic do roboty".

Nie rozumiem, dlaczego jest to niezerowy status wyjścia. Czy nie byłoby lepiej, gdyby po prostu pozwoliłeś, by zip cicho nie robił? To nie wydaje się być rzeczywistym problemem, jeśli zip nie ma nic wspólnego.

Mogę to powstrzymać: powiedz make, aby znikał niezerowy status wyjścia z suwaka, dzwoniąc pod numer -zip -u. Ale problem z tym podejściem polega na tym, że 12 to jedyny status wyjścia, który chcę zignorować. Wszystkie pozostałe wskazują na faktyczne problemy, które sprawiłyby, że chciałbym przerwać make.

Może mógłbym ustawić zmienną równą wyjściu z echo $?, a następnie przetestować na 0 lub 12, ale wydaje się, że robi to po każdym pojedynczym oświadczeniu zip w pliku .mk.

Czy istnieje elegancki sposób poradzenia sobie z tym?

+1

Nic bardziej eleganckiego, niż ci się wydawało. Możesz całkowicie zignorować ten błąd lub sprawdzić, które z nich nie są prawdziwymi błędami. – MadScientist

Odpowiedz

3

Err ... Jako szybki i brudny roztwór, można użyć otoki powłoki:

#!/bin/ksh 

zip "[email protected]" 
rc=$? 

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

exit $rc 

Alternatywnie, można zrobić prawie samo inline w Makefile ale będzie to wyglądać nieco brzydki (będzie musi być jednopanelową skorupą z duplikatami $ znaków itp.)