Der Befehl $ make all
gibt Fehler aus, z. B. rm: cannot remove '.lambda': No such file or directory
stoppt er. Ich möchte, dass es die rm-not-found-Fehler ignoriert. Wie kann ich erzwingen?
Makefile
all:
make clean
make .lambda
make .lambda_t
make .activity
make .activity_t_lambda
clean:
rm .lambda .lambda_t .activity .activity_t_lambda
.lambda:
awk '{printf "%.4f \n", log(2)/log(2.71828183)/$$1}' t_year > .lambda
.lambda_t:
paste .lambda t_year > .lambda_t
.activity:
awk '{printf "%.4f \n", $$1*2.71828183^(-$$1*$$2)}' .lambda_t > .activity
.activity_t_lambda:
paste .activity t_year .lambda | sed -e 's@\t@\t\&\t@g' -e 's@$$@\t\\\\@g' | tee > .activity_t_lambda > ../RESULTS/currentActivity.tex
rm -f
ist besser für das spezifische Problem, das der Benutzer hat, aber es ist immer noch schön, über die allgemeine Lösung Bescheid zu wissen, auch wenn sie manchmal unsicher ist.$(RM)
, die Sie anstelle von verwenden könnenrm -f
.make -k
(oder--keep-going
auf Gnumake) wird tun, was Sie verlangen, denke ich.Sie sollten wirklich
-f
die fehlerhafte del- oder rm-Zeile finden und eine hinzufügen, um zu verhindern, dass dieser Fehler bei anderen auftritt.quelle
make
, um so viele Kompilierungseinheiten wie möglich zu erstellen, während Sie das Problem beheben, an dem der Compiler erstickt ist. Auf diese Weise müssen Sie nicht warten, bis auch alles andere erstellt ist, wenn Sie das Problem behoben haben.Wechseln Sie sauber zu
Dh nicht zum Entfernen auffordern; Beschweren Sie sich nicht, wenn die Datei nicht vorhanden ist.
quelle
Rückgabe erfolgreich durch Blockieren
rm
des Rückkehrcodes hinter einer Pipe mit demtrue
Befehl, der immer zurückgibt0
(Erfolg)quelle
Um make dazu zu bringen, Fehler in einer einzelnen Zeile tatsächlich zu ignorieren, können Sie sie einfach mit dem Suffix versehen
; true
und den Rückgabewert auf 0 setzen. Beispiel:Dadurch wird die stderr-Ausgabe auf null umgeleitet und dem Befehl mit true gefolgt (was immer 0 zurückgibt, wodurch angenommen wird, dass der Befehl erfolgreich war, unabhängig davon, was tatsächlich passiert ist), sodass der Programmfluss fortgesetzt werden kann.
quelle
Ändern Sie Ihre
clean
sorm
wird nicht beschweren:quelle
Fügen Sie eine
-f
Option in Ihrenrm
Befehl ein.quelle