2016-03-24 14 views
0

Ich habe ein Bash-Skript, das mehrere Skripte (Bash & Python) aus einigen Verzeichnissen aufruft.Problem abbrechen, wenn Fehler/Ausnahme auftritt?

Ich möchte es abgebrochen werden, wenn eines der Skript einen Fehler/Ausnahme auslöst.

#!/bin/bash 

/usr/bin/test.sh /usr/1/sample.sh /usr/2/temp.py 

exit 0 

Irgendwelche Vorschläge, wie Sie dies erreichen können?

FYI: Ich bin ein Anfänger in bash Scripting.

+1

Es hängt alles von der Ausgabe und/oder dem Exit-Status der Skripte ab, die Ihr Skript aufruft. Einige Programme geben zwar Fehler aus, laufen aber weiter, einige Programme geben einen Exit-Status von 0 für Erfolg zurück und andere geben einen Nicht-Null-Erfolg zurück. Einige Programme geben eine reguläre Ausgabe an den Standardfehler aus. –

+1

Auch Ihr Code, der mehrere Skripts aufruft, ruft tatsächlich ein Skript auf und übergibt die anderen beiden als Argumente. Ich würde Google nach Bash-Scripting-Guides durchsuchen (es gibt einige wirklich gute, leicht zu findende Guides) und sie durchlesen. –

Antwort

1

Sie können set -e am Anfang des Skripts setzen:

-e errexit  If not interactive, exit immediately if any 
        untested command fails. The exit status of a com‐ 
        mand is considered to be explicitly tested if the 
        command is used to control an if, elif, while, or 
        until; or if the command is the left hand operand 
        of an “&&” or “||” operator. 

Dies wird nur Arbeit, wenn einer Ihrer Befehle Ausgang mit einem Exit-Code ungleich Null im Fehlerfall. Gut erzogene Programme sollten immer mit 0 nur auf Erfolg beenden, und wenn deins nicht, möchten Sie wahrscheinlich das beheben.

Ich bin nicht ganz sicher, was Sie dies erwarten tun:

/usr/bin/test.sh /usr/1/sample.sh /usr/2/temp.py 

Da dies mit zwei Argumenten einen Befehl (/usr/bin/test.sh) ausführen, mögen Sie wahrscheinlich sie in separaten Zeilen setzen.

Verwandte Themen