# Shell Variable auserhalb einer Schleife verwenden



## Ragna_44 (7. November 2007)

Da sich die anderen Probleme bei mir durch Veränderung des Codes erledigt haben. Tritt aber nun vollgendes auf.
Aus der Datei neuedateinamen.txt und altedateinamen.txt lese ich die einzelnen Zeilen aus. 
Nebenher lasse ich allerdings einen Zähler mitlaufen. 
Jedoch wird bei der Ausgabe des Zählers nach dem Sprung aus der zweiten Schleife nicht der aktuelle Zählstand sondern 0 ausgegeben. 
Hat jemand eine Erklärung dafür?

declare -i zaehler=0
cat neuedateinamen.txt | while read line
do
   echo $zaehler
   cat altedateinamen.txt | while read lines
   do
   zaehler= `expr $zaehler + 1`
done
done


----------



## olqs (7. November 2007)

Hi,

ich denke ich hab dafür eine Erklärung.
In der unten stehenden Zeile startest du durch das cat einen neuen Unterprozess.
Alle Variablen die in dem Unterprozess laufen sind nach dem Ende des Prozesses leider nicht mehr vorhanden

```
cat neuedateinamen.txt | while read line
```

Probier mal den leicht umgebauten Code:


```
declare -i zaehler=0
while read line
do
  echo $zaehler
  while read lines
  do
    zaehler= `expr $zaehler + 1`
  done < altedateinamen.txt
done < neuedateinamen.txt
```


----------



## likemaddin (9. April 2010)

Da keine Antwort dazu gegeben wurde ob es klappt, mach ich das mal, auch wenn dei Beitrag doch schon etwas älter ist. 
Die Syntax kannte ich bisher noch nicht, aber es funktioniert super!
Danke für den Beitrag olqs

Gruß hTm


----------

