Sto cercando di rinforzare il mio script di notifica. Il modo in cui lo script funziona è che l'ho messo dietro un comando shell di lunga durata e poi tutti i tipi di notifiche vengono richiamati dopo che è finito lo script di lunga durata.Ottenere il codice di uscita dell'ultimo comando della shell in un altro script
Ad esempio:
sleep 100; my_notify
Sarebbe bello per ottenere il codice di uscita dello script in esecuzione lungo, il problema è che chiamando my_notify
crea un nuovo processo che non ha accesso alla variabile $?
.
Confronta:
~ $: ls nonexisting_file; echo "exit code: $?"; echo "PPID: $PPID"
ls: nonexisting_file: No such file or directory
exit code: 1
PPID: 6203
vs.
~ $: ls nonexisting_file; my_notify
ls: nonexisting_file: No such file or directory
exit code: 0
PPID: 6205
Lo script my_notify
ha la seguente in esso:
#!/bin/sh
echo "exit code: $?"
echo "PPID: $PPID"
Sto cercando un modo per ottenere il codice di uscita il comando precedente senza modificare troppo la struttura del comando. Sono consapevole del fatto che se lo cambio funzionasse più come time
, ad es. my_notify longrunning_command...
il mio problema sarebbe risolto, ma in realtà mi piace poterlo attaccare alla fine di un comando e temo complicazioni di questa seconda soluzione.
Questo può essere fatto o è fondamentalmente incompatibile con il modo in cui funzionano le shell?
Il mio guscio è zsh
ma mi piacerebbe che funzionasse anche con bash
.