Domanda

Lo so che è possibile utilizzare 'interlocutore' per ottenere un backtrace di chiamate di funzione in bash:

#! /bin/bash
Backtrace () {
   echo "Backtrace is:"
   i=0
   while caller $i
   do
      i=$((i+1))
   done
}
myFunc () {
   Backtrace
}
myFunc

Stampe:

Backtrace is:
11 myFunc ./test.sh
13 main ./test.sh

La mia domanda è, consente di dire che ho uno script che usi 'set -e' per terminare in qualsiasi fallimento incontrollato. E 'possibile ottenere un numero di riga in cui lo script non è riuscita (e dei suoi chiamanti)

Ho provato a fare ingenuamente: trappola EXIT 'Backtrace', ma che mi dà '1 ./test.sh principale', piuttosto che il numero di riga della mancanza di comando

È stato utile?

Soluzione

Non sono sicuro se funzionerà, ma prova ad aggiungere ERR alla tua lista dei segnali trap'd. Forse il tuo codice verrà richiamato prima la roba set -e prende il sopravvento, nel qual caso sarete di nuovo nel mondo degli affari.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top