Vinzenz Mai: [bash] File in array einlesen?

Beitrag lesen

Hallo

ich habe hier gerade ein vertracktes Problem mit der bash (GNU bash, version 2.05b.0(1)-release).

Ansatz:
cnt = 0                           # just a lonely counter
cat /path/to/file | while read line; do

# Hier entsteht das Subshellproblem.
      # Die folgenden Variablen sind nur in der Subshell verfügbar

cmd[$cnt]=${line}             # assign line to array entry
    echo $cnt $line ${cmd[$cnt]}  # show the whole stuff
    let cnt=$cnt+1                # increase counter
done

und hier nicht mehr.

Was uebersehe ich da, bzw. wie bekomme ich dieses Array "persistent"?

Lösungsmöglichkeit:

  
declare -i cnt=0                  # eine wundervolle Integer  
declare -a cmd                    # ein nettes Array  
  
exec 3<>/path/to/file             # nutze exec um die Subshell zu vermeiden  
  
while read line <&3; do           # lese Datei zeilenweise  
    cmd[$cnt]=$line  
    let cnt++  
done  
  
exec 3>&-  
  
echo $cnt                         # ist nun nicht mehr 0  

Freundliche Grüße

Vinzenz