Ich versuche, ein Shell-Skript zu schreiben, das im Wesentlichen eine Reihe von Funktionen in einem anderen Skript aufruft. Das Skript wie folgt aussieht:Verwenden von set -e und Traps in Shell-Skripten
#!/bin/bash
set -e
function cleanup() {
exitStatus=$?
if [ $exitStatus -ne 0 ]; then
rm -rf /tmp/alpha*
fi
exit $exitStatus
}
trap cleanup ERR
VAR1="test"
. /home/common/scripts/utils.sh
echo "Executing function1"
function1 $VAR1
echo "Executing function2"
function2 $VAR1
exit $?
Meine Frage ist, dass ich -e sowie Trap, um festlegen muß, um sicherzustellen, dass mein Skript robust ist hier oder-Falle genug ist.
Zweitens: Wenn ich -e in diesem Skript setze, muss ich -e auch in utils.sh
setzen, um sicherzustellen, dass die Funktion korrekt in diesem Skript ausgeführt wird, oder die Menge -e in diesem Skript wird dafür sorgen davon?
Ich kann das Verhalten beim Beenden des Skripts replizieren, indem ich 'exit $?' In meiner Aufräumfunktion hinzufüge, oder? In diesem Fall müsste ich 'set -e' nicht verwenden, oder? – user2277873
Wenn ich 'set -e' in ein Unterskript gesetzt habe und wenn es ein Fehler in diesem Unterskript gibt, wird es auch aus dem Hauptskript herauskommen? (Angenommen, ich habe 'set -e' in das Hauptskript gesetzt) – user2277873
' set -e' löst Ihre Trap/Cleanup-Funktion sofort aus, wenn einer der Befehle im Skript fehlschlägt. Sonst passiert das Trap/Cleanup beim Beenden des Skripts. Und ja, wenn das oberste Skript 'set -e' hat, dann wird ein fehlgeschlagenes Unterskript dazu führen, dass das oberste Skript beendet wird. –