[SOLVED] String Arrays und deren Ausgabe im Bash-Script

  • Hoi Coder ;)


    Trotz Consultierung zweier Online-Bash-Scripting HowTos und diverser wilder Versuche , ist es mir einfach nicht gelungen , mein Problem zu lösen .


    Da nem vorschnellen Script Test ( siehe auch mein LFS Thread ) selbiges ins Nirwana befördert wurde , dachte ich mir , daß sich der Spagetticode ja doch mit ner Loop vereinfachen läßt .


    Inhalt ist , daß ne Abfrage verschiedener Variablen stattfindet , die der geneigte User setzen kann , oder auch mit dem vorgegebenen Defaultwert belegen .


    Dazu habe ich der einfachen Zuordnung halber , folgendes System angewendet :


    a0="Domain=" b0="hjs.homeip.net" c0="Welcher Domainname soll verwendet werden ?"
    a1="..." b1="..." c1=",,,,"
    ...
    Dieses Sammelsurium wird dann in Arrays zusammengefasst :


    array1 { $a0 $a1 ... $an }
    array2 { $b0 $b1 ... $bn }
    array3 { $c0 $c1 ... $cn }


    Da ham mer die Loop


    for i in 0 1 2 ... n
    echo array3[$i] "["$b"]"
    read resp
    ...


    Der Rest is ja hier nich weiter relevant .
    Leider spuckt mir dieser Spaß immer nur Wortweise die Frage aus - sprich "Welcher" für c0 .
    Gibbet nen Trick , den ganzen Satz zu erwischen ?


    Auch der Versuch , c erst gar nicht ins Array zu packen , sondern mittels indirektem Zugriff zu packen , war ein Griff in die braune Masse :


    c="c"$i echo ${$c}


    führt leider nicht zum gewünschten Erfolg - obwohl das laut den Hilfen so funzen sollte


    Da gibbet dann nur : "c0 : command not found"


    Kennt jemand ne andere Lösung , als die Wörter der Sätze mit "-" oder "_" zu einem Stück zu machen ?


    HJS

    Working VDR : VDR-1.4.6 - ACPI/NVRAM Wakeup - working on hjslfs

    Einmal editiert, zuletzt von hjs ()

  • ich glaube ich bin deinem problem ein bisschen auf die spur gekommen:
    Die einzelnen Elemente einer Array-Variablen können mit "name[index]=wert" gesetzt werden.
    Zitat aus "Linux mit Methode"


    von "name[wert1 wert2 wert3]" steht da nix dabei.


    Zitat

    c="c"$i echo ${$c}


    hier solltest du vielleicht die "{ }" durch "[ ]" ersetzen.
    und es sollte vermutlich c=$"c"$i echo ${$c}

    RavenIV


    ----------------------------------------------------------------------


    LINUX - das längste text-adventure aller zeiten...

  • RavenIV :


    Thanks a Lot :] Auf die Idee , die Strings jeweils einzeln schon bei der Definition als Arrayelemente anzulegen , bin ich gar nicht gekommen . :whatever
    Obwohl offensichtlich die Ursache ist , daß in die Array Definition dann halt der String gelegt wird und das Array dann Code 20h als Trennzeichen interpretiert ...


    So kenn ich doch ne Methode , einen Satz in seine Worte zu zerlegen . Ob ich das noch weiß , wenn ichs mal brauch sei dahin gestellt :whatever


    Code
    c=$"c"$i echo ${$c}

    führt allerdings zur Fehlermeldung " bad substitution" - die hatte ich auch schon einige Male ...


    Aber da die erste Methode ja funzt - Problem gelöst - nochmal vielen Dank für die Mühe :]


    HJS

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!