[redhat-list-de] Shell Script: Variablen aus Schleife exportieren

Alexander Dalloz ad+lists at uni-x.org
Fri Sep 23 13:45:07 UTC 2005


Am Fr, den 23.09.2005 schrieb Heiner.Wulfhorst at intermoves.de um 10:46:

> Ich muss aus einer Datei einzelne Zeilen auslesen, die ich in einem
> Array Speichern will.
> Dieses Array soll wenn die Datei zuende gelesen ist zurückgegeben
> werden:
>                                  CODE
>                                    
>                             get_patterns()
>                                   {
>                                   i=0
>                grep -v "^#" $file_in | while read pattern
>                                    do
>                             patt[$i]="$pattern"
>                                   let i++
>                                   done
>                           return ${pattern[*]}
>                                   }
>                                    
>                              get_patterns
>                               echo "$?"
> 
> 
> 
> 1. Kann ich überhaupt mit return nicht-integer Werte zurückgeben?
> wenn ja, wie?

IMHO nein.

> 2. Wie kann ich auf den Wert von "i" auch ausserhalb der Schleife
> zugreifen? 
> Ich habe es schon mit export und declare -x versucht, aber das hab ich
> entweder nicht richtig gemacht oder es geht damit garnicht!

So geht das nicht. Durch die Pipe arbeitest du mit einer subshell. Die
korrekte Lösung funktioniert nach folgendem Prinzip:

while read foo; do
   whatever
done < <(grep -v '^#' file)

Referenz: http://www.tldp.org/LDP/abs/html/process-sub.html

> Heiner Wulfhorst

Alexander


-- 
Alexander Dalloz | Enger, Germany | GPG http://pgp.mit.edu 0xB366A773
legal statement: http://www.uni-x.org/legal.html
Fedora Core 2 GNU/Linux on Athlon with kernel 2.6.11-1.35_FC2smp 
Serendipity 15:41:17 up 2 days, 23:26, load average: 0.16, 0.13, 0.15 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
URL: <http://listman.redhat.com/archives/redhat-list-de/attachments/20050923/4ce3895c/attachment.sig>


More information about the redhat-list-de mailing list