Ich habe ein sehr einfaches Bash-Skript mit einigen Befehlen, die nacheinander ausgeführt werden. Die Ausgabe jedes Befehls wird in eine eigene Protokolldatei umgeleitet. So etwas wie das hier
(command --param a > sys.a.log 2>&1)
(command --param b > sys.b.log 2>&1)
(command --param c > sys.c.log 2>&1)
Wenn ich dieses Skript jetzt ausführe, startet es einwandfrei, aber wenn der erste Befehl abgeschlossen ist (die Protokolldatei zeigt, dass die letzte Zeile des Programms ausgeführt wurde), wird der Prozess nicht beendet. Ich muss ihn manuell beenden, bevor das Skript zur nächsten Zeile übergeht (und sys.b.log erstellt).
Ist das das Verhalten, das Sie von diesem Skript erwarten würden (ich weiß nicht viel über Bash), oder ist das ein unerwartetes Verhalten und sollte ich woanders nach dem Problem suchen? Falls es wichtig ist, der eigentliche Befehl lautet „java“ mit einer Reihe von Parametern.
Antwort1
Es ist eine gute Idee, Exit-Traps in Ihren Bash-Skripten zu verwenden
Einige Ausschnitte:http://redsymbol.net/articles/bash-exit-traps/
Sehen Sie sich auch diesen Beitrag zum Schreiben robuster Shell-Skripte und den Dingen an, auf die Sie achten sollten:http://www.davidpashley.com/articles/writing-robust-shell-scripts/