Sie können den Rückgabewert im Befehl quit()
setzen, z. B. q(status=1)
. Standard ist 0, siehe auch? Quit. Wie man das in Perl fängt, ist, als ob man irgendeinen anderen Rückgabewert in Perl fängt. Es wird in einer speziellen Variablen $?
gespeichert, wenn ich mich recht erinnere. Siehe auch die Beispiele in der Perldoc für system
, es sollte dort veranschaulicht werden.
Auf einer Nebenbemerkung würde ich nur die R-Perl-Schnittstelle verwenden. Sie können hier Informationen und Beispiele finden: http://www.omegahat.org/RSPerl/
Nur der Vollständigkeit halber:
Zu Beginn des Skripts können Sie so etwas wie gesagt:
options(
warn=2, # This will change all warnings into errors,
# so warnings will also be handled like errors
error= quote({
sink(file="error.txt"); # save the error message in a file
dump.frames();
print(attr(last.dump,"error.message"));
sink();
q("no",status=1,FALSE) # standard way for R to end after errors
})
)
Dies wird die Fehlermeldung speichern und aus der R-Sitzung ausbrechen, ohne zu speichern, mit Exit-Code 1 und ohne die .Last auszuführen.
Dennoch bietet die R-Perl-Schnittstelle viel mehr Möglichkeiten, die es wert sind, überprüft zu werden, wenn Sie dies öfter tun werden.
http://stackoverflow.com/questions/3477916/using-perls-system#3478060 – daxim
@daxim: Das ist nur die halbe Antwort. Die andere Hälfte stellt fest, wie der Beendigungsstatus in einem R-Skript festgelegt wird. Das ist also nicht nur eine Perl-Frage, also kein Duplikat der anderen Frage, daher lehne ich auch den Antrag ab, diese Frage zu beenden. –
@Aristotle: Ich glaube, dass David eine Lösung vorschlägt, wenn er davon redet, im R-Skript einen wahren Wert zurückzugeben. Es ist nicht Teil der Anforderung. – Zaid