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