Hallo Ronny,
On Thu, Oct 25, 2012 at 13:50:27 +0200, Ronny Seffner wrote:
> ich habe in einer Datei z.b. Folgendes:
>
> klasse=("eins" "zwei")
> eins=("klaus" "gerd")
> zwei=("emil" "inge")
>
> ${${!${klasse[0]}}[1]} geht nicht aber:
Sowas geht wahrscheinlich nur mit "eval" und ein wenig Quotinghoelle:
eval echo \${${klasse[0]}[1]}
Mit eval wird das, was sich nach einer Shell-Expansion ergibt, ein
weiteres mal durch die Shell expandiert. Deshalb auch das gequotete
$-Zeichen vor dem ersten Klammerpaar.
Als geschachtelte while-Schleifen:
#!/bin/bash
klasse=("eins" "zwei" "gummizelle")
eins=("klaus" "gerd")
zwei=("emil" "inge")
gummizelle=("sarah palin" "patent-troll" "tepco")
k=0
while [ -n "${klasse[$k]}" ]
do
echo "Klasse ${klasse[$k]}:"
s=0
eval sn=\${${klasse[$k]}[$s]}
while [ -n "$sn" ]
do
echo " $sn"
s=$[s+1]
eval sn=\${${klasse[$k]}[$s]}
done
k=$[k+1]
done
Gruss,
Chris
--
Christian Perle chris AT linuxinfotag.de
010111 http://chris.silmor.de/
101010 LinuxGuitarKitesBicyclesBeerPizzaRaytracing
_______________________________________________
Lug-dd maillist - [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd