bubble: bash - exit

Ich habe insgesamt 3 Scripts. Eins um Funktionen bereit zustellen (functions.sh), ein Hauptscript (main.sh), dass diverese andere Scripts aufruft (hier inner.sh)

In der functions.sh will ich eine Funktion definieren für formatierte Fehlermeldung und das ganze dann mit dem Exit Code 1 beendet, dabei zickt aber inner.sh rum.

functions.sh:

function _error {  
     echo -e "ERROR! ${@}!\n\nFAILED!\n\n"  
     exit 1  
}

main.sh:

source function.sh  
do_something || _error do_something failed.  
  
source inner.sh  
  
echo "test"

inner.sh:

_error error test  

Wenn do_something fehl schlägt, wird das komplette Script abgebrochen, wie es soll (Formatierte Meldung und exit code).
Aber wenn do_something OK ist und source inner.sh ausgeführt wird, kommt zwar meine formatierte Meldung, allerdings bewirkt das exit 1 überhaupt nichts und "test" wird auch ausgegeben, das soll aber aber nicht passieren, sprich inner.sh soll auch die Ausführung von main.sh stoppen.

source inner.sh || exit $? hilft auch nichts.

Irgendwelche Ideen?

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
  1. Mahlzeit,

    Nachtrag: Also das exit 1 aus der Funktion wird nicht automatisch weitergereicht wollte ich damit sagen.

    --
    42
    1. Nachtrag: Also das exit 1 aus der Funktion wird nicht automatisch weitergereicht wollte ich damit sagen.

      Dieser Satz hat mich nochmal nachdenken lassen. Ich hab meinen Fehler jetzt gefunden. Das Problem war, dass ich inner.sh in einer while-Schleife ausgeführt hab:

      find $repo -type f -name "*.repo" | while read repo; do  
           source $repo  
           echo test1  
      done  
      echo test2
      

      ($repo steht hier für inner.sh)

      wenn $repo nun ein exit 1 liefert wird "test1" nicht ausgegeben, die Schleife verlassen und normal weiter gemacht, sprich "test2" ausgegeben.

      So arbeitet es wie gewünscht

      find $repo -type f -name "*.repo" | while read repo; do  
           source $repo  
           echo test1  
      done || exit $?  
      echo test2
      

      MfG
      bubble

      --
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye