Ich versuche, mein Benachrichtigungsskript zu verbessern. Die Art, wie das Skript funktioniert, ist, dass ich es hinter einen lang laufenden Shell-Befehl stelle und dann alle Arten von Benachrichtigungen aufgerufen werden, nachdem das lange laufende Skript beendet wurde.Exit-Code des letzten Shellbefehls in einem anderen Skript abrufen
Zum Beispiel:
sleep 100; my_notify
Es wäre schön, den Exit-Code des langen laufenden Skript zu bekommen, ist das Problem, dass my_notify
auffordert, einen neuen Prozess erstellt, der den Zugriff auf den $?
Variable nicht hat.
vergleichen:
~ $: ls nonexisting_file; echo "exit code: $?"; echo "PPID: $PPID"
ls: nonexisting_file: No such file or directory
exit code: 1
PPID: 6203
gegen
~ $: ls nonexisting_file; my_notify
ls: nonexisting_file: No such file or directory
exit code: 0
PPID: 6205
Das my_notify
Skript folgendes in sich hat:
#!/bin/sh
echo "exit code: $?"
echo "PPID: $PPID"
ich nach einer Möglichkeit, den Exit-Code zu bekommen, der vorherige Befehl, ohne die Struktur des Befehls zu sehr zu ändern. Ich bin mir der Tatsache bewusst, dass, wenn ich es zum Arbeiten mehr wie time
, z. my_notify longrunning_command...
mein Problem wäre gelöst, aber ich mag es tatsächlich, dass ich es am Ende eines Befehls heften kann und ich befürchte Komplikationen dieser zweiten Lösung.
Kann dies getan werden oder ist es grundsätzlich nicht kompatibel mit der Funktionsweise von Shells?
Meine Shell ist zsh
, aber ich möchte es auch mit bash
arbeiten.