Versuchen:
invoke-rc.d tomcat stop > /dev/null 2>&1 || true
Ein wenig Hintergrund:
[email protected]: # true
[email protected]: # echo $?
0
[email protected]: # false
[email protected]: # echo $?
1
[email protected]: # which true
/bin/true
[email protected]: # which false
/bin/false
Die echte Lösung wird bei dem tomcat Init-Skript schauen, um zu sehen, wie es weiß, ob Kater :) auf diese Weise ausgeführt wird, Sie belästigen es nicht unnötig.
Siehe this post auf den anderen Vorschlag zu deaktivieren/set + e. Während es Ihr unmittelbares Problem lösen könnte, stellen Sie möglicherweise fest, dass Sie das kürzlich nicht definierte Verhalten in Ihrem eigenen Skript benötigen, besonders, da Sie Dateien kopieren.
Dies ist einer der Hauptgründe, warum True und False gemacht wurden, abgesehen davon, dass Makefiles sich in einer Vielzahl von Build-Umgebungen wie erwartet verhalten.
Auch set + e ist nicht vollständig portierbar, d. H. Einige Versionen von Solaris (und sogar Dash) .. aber ich bezweifle, dass dies ein Anliegen für Sie ist.
Ist das Standardverhalten dieser Bash nicht? Ich hätte schwören können, dass es war (Sie müssen explizite Maßnahmen ergreifen, um ein Skript zu beenden, wenn ein Befehl fehlschlägt ...) –
Wenn Sie dieses Skript ausführen und Tomcat nicht ausgeführt wird, wird das Skript die Ausführung stoppen, da der erste Befehl einen Fehler zurückgibt. Ich möchte, dass das Skript fortgesetzt wird. – JorgeO
@Alex: Es ist Standard, aber es gibt wahrscheinlich etwas, das die Standardeinstellung überschreibt. –