Variable in Subshell global deklarieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von gruenpflanze, 29.06.2007.

  1. #1 gruenpflanze, 29.06.2007
    gruenpflanze

    gruenpflanze Mitglied

    Dabei seit:
    25.06.2007
    Beiträge:
    26
    Zustimmungen:
    0
    Hallo!
    mit untenstehendem code wird eine subshell geöffnet, in der dann die while-schleife ausgeführt wird. Die variable $i brauch ich nachher aber noch, leider hat sie, sobald sie die schleife und somit die subshell verlassen hat,wieder den ausgangswert. wie kann ich das ändern?
    liebste grüsse,
    pascal

    PHP:
            i=0
            cat $FILE 
    | while read line;
            do
            echo 
    $i
            b
    =`echo ${line} | awk '{ print $1 }'`
            
    ifconfig -grep  $b
                    
    if [ $? -eq 0 ]
                    
    then
                        mandant_no
    =`echo ${line} | awk '{ print $2 }'`
                echo 
    $mandant_no
                i
    =`expr $i \+ 1`
                echo 
    "i in schleife: $i#GIBT etwas >0
            
    fi
        done
        
    echo "i ausserhalb schleife: $i"   #GIBT 0
    Ich möchte, dass der Wert von i ausserhalb der schleife den gleichen hat wie bei der letzten schleifendurchführung.

    vielen dank für eure hilfe!
    liebe grüsse
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Über dieses Problem bin ich auch schon ein paarmal gestolpert. Schau dir mal das an, da hats zwei Lösungsvorschläge: http://www.cboltz.de/de/linux/bash/
    Klappt wunderbar...
    Bin jedoch an weiteren Lösungen schwer interessiert ;)
    Gruss
    d22
     
  4. #3 floyd62, 01.07.2007
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Schon mal probiert, statt
    Code:
    cat $FILE | while read line;
    ...
    done
    
    einfach
    Code:
    exec 0<$FILE; while read line;
    ...
    done
    
    oder, wenn man STDIN noch braucht, sowas wie
    Code:
    exec 3<$FILE; while read line <&3;
    ...
    done
    exec 3<&-
    
    zu verwenden? Dann sollte der Code innerhalb der Schleife nämlich im Kontext der aktuellen Shell ausgeführt werden, so daß der Wert der Variablen, die innerhalb der Loop verändert wird, auch danach noch verfügbar ist ...

    Gruss, ...
     
Thema:

Variable in Subshell global deklarieren

Die Seite wird geladen...

Variable in Subshell global deklarieren - Ähnliche Themen

  1. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  3. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  4. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  5. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...