Springe zum Hauptinhalt

Bourne
next up previous contents
Next: Spezielle Probleme und Kommandos Up: Ablaufsteuerung Previous: exit-Kommando

Funktionen

  • Definition

    func_name () {     cmd_liste }


    bzw.


    func_name () { cmd_liste; }


  • Aufruf


    func_name [[ arg_1 [ arg_2 ... ]]


    Die Werte von $arg\_1$, $arg\_2$ usw. werden den Shell-Variablen 1, 2 usw. zugewiesen und können damit über $1, $2, usw.  abgerufen werden.

  • Rückkehr aus der Funktion
    • bei Erreichen des letzten Kommandos
    • über das Kommando

          return [ n]


      Dabei liefert n den Exit-Status der Funktion. Falls n weggelassen wird, ergibt sich der Exit-Status der Funktion aus dem Exit-Status des zuletzt ausgeführten Kommandos.

  • Bemerkungen
    • Funktionen existieren nur in der Shell, in der sie definiert wurden. Demzufolge bleiben Veränderungen (z.B. durch Argumentübergabe an die Funktion, d.h. Setzen der Variablen 1 usw. nach Beendigung der Funktion erhalten.
    • Funktionsdefinitionen können in .profile gespeichert werden bzw. in einen File $funcdef\_file$, welches später (oder in .profile) durch

          . funcdef_file


      ausgeführt wird. Auf diese Weise können Funktionen auch in Sub-Shells verfügbar gemacht werden (z.B. in einen Shell-Script).

    • Der Aufruf von Funktionen ist (interaktiv) am Terminal möglich.
    • Funktionen sind schneller als Shell-Scripts, da sie intern gespeichert werden.
  • Beispiel
    #
    # mcd <verzeichnis>  --> Wechseln in <verzeichnis>
    #
    # mcd -              --> ins vorherige Verzeichnis
    # 
    mcd ()
    {
        AKTDIR=`pwd`
        if [ "$1" = "-" ]
        then
            /bin/echo -n $ALTDIR --
            cd $ALTDIR;
        else
            /bin/echo -n $1 --
            cd "$1";
        fi
        ALTDIR=$AKTDIR
    }
    
    

next up previous contents
Next: Spezielle Probleme und Kommandos Up: Ablaufsteuerung Previous: exit-Kommando