PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String zerlegen und in ein Array einlesen (Shell)



mccab99
08-03-2005, 22:14
Guten Abend,

Ich habe wahrscheinlich in google nicht die richtigen Suchbegriffe eingegeben und bin völliger Neuling in der Shell-Programmierung.

Ich möchte einen String bestehend aus jeweils drei Zeichen getrennt von einen Leerzeichen mithilfe der Shell in ein Array einlesen, wobei jedes Element des Arrays eine Dreierbuchstabengruppe enthalten soll:

QUERY_STRING="abc ngf gtz htm" (z.B.)

Dabei kann der String eine unterschiedliche Anzahl von Dreier-Buchstabengruppen oder nichts enthalten.

Man müsste also eine Schleife programmieren, die nur so oft läuft, wie Buchstabengruppen vorhanden sind und das Array füllt.

Meine Idee:

Schleifenanfang, wahrscheinlich WHILE:

Prüfung, ob QUERY_STRING Zeichen enthält

Die erste Buchstabengruppe erhalte ich mit:

GRUPPE[$i]=$(echo ${QUERY_STRING} | cut -d' ' -f1 | cut -d'=' -f2)

und müsste danach QUERY_STRING vorne um 4 Zeichen kürzen

$i inkrementieren

und zurück zum Schleifenanfang

Ich finde aber auf Teufel komm raus heute keine Shell-Funktion, die eine Kürzung von QUERY_STRING erlaubt.

Fragen:
Ist der Ansatz generell ok, oder geht es einfacher?

Wenn der Ansatz ok ist, dann:
Wie kann ich prüfen, ob eine Zeichenkette Zeichen enthält?
Wie kann ich QUERY_STRING vorne um n Zeichen kürzen?

Gruß,

Maik

mccab99
08-03-2005, 22:43
Ich hasse das. Kaum ist das Problem klar umrissen, gibt es eine Lösung:



typeset -i counter=0
for dev in `echo $QUERY_STRING`
do
PART[counter]=$(echo "$dev")
echo ${PART[counter]}
counter=counter+1
done


Gruß,

Maik