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