[bash] File in array einlesen?
Joerg
- programmiertechnik
Hi,
ich habe hier gerade ein vertracktes Problem mit der bash (GNU bash, version 2.05b.0(1)-release).
Ziel: Inhalt einer Datei in array ${cmd[]} einlesen und spaeter im selben script weiterverwenden.
Ansatz:
cnt = 0 # just a lonely counter
cat /path/to/file | while read line; do
cmd[$cnt]=${line} # assign line to array entry
echo $cnt $line ${cmd[$cnt]} # show the whole stuff
let cnt=$cnt+1 # increase counter
done
Problem: Das funktioniert auch "soweit" (siehe die "echo ..."-Zeile), aber ... nach dem Durchlauf der Schleife ist $cnt 0, und $cmd leer.
Was uebersehe ich da, bzw. wie bekomme ich dieses Array "persistent"?
Danke fuer jede Hilfe!
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