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

Antwort per Email an