Array mit Werte - die Leerzeichen beinhalten - abfüllen

B

banshe

Grünschnabel
Hallo zusammen

Bin neu hier und hab direkt eine Frage...

Ich habe ein Befehl der mir einige Zeilen mit Werten ausgibt:

Befehl:
Code:
vmware-cmd -l

Ausgabe:
Code:
/vmfs/volumes/177fbd/CENTOS-5.4-32BIT/CENTOS-5.4-32BIT.vmx
/vmfs/volumes/177fbd/vSphere Management Assistant (vMA)/vSphere Management Assistant (vMA).vmx
etc....


Ich möchte diese ausgabe nun in einem Array. Jede Zeile soll eine Element im Array sein.
Leider macht mir das Array ein Element nur so lange, bis das erste Leerzeichen kommt.

Aus diesem Grund habe ich am Afang und am Ende jeder Zeile ein " eingefügt und habe die Zeilenumbrüche durch Leerzeichen ersetzt:

Befehl:
Code:
vmware-cmd -l | sed '1d;s/^/"/;s/$/"/' | sed -n -e 'H;${x;s/\n/ /g;p;}'

Ausgabe:
Code:
"/vmfs/volumes/177fbd/CENTOS-5.4-32BIT/CENTOS-5.4-32BIT.vmx"
"/vmfs/volumes/177fbd/vSphere Management Assistant (vMA)/vSphere Management Assistant (vMA).vmx"
etc....

Das Array trennt mir die Elemente jedoch immernoch nach dem ersten Leerzeichen... in diesem Beispiel:

Code:
array=( `vmware-cmd -l | sed '1d;s/^/"/;s/$/"/' | sed -n -e 'H;${x;s/\n/ /g;p;}'` )

echo ${array[0]}
"/vmfs/volumes/177fbd/CENTOS-5.4-32BIT/CENTOS-5.4-32BIT.vmx"

echo ${array[1]}
"/vmfs/volumes/177fbd/vSphere Management Assistant (vMA)/vSphere

echo ${array[2]}
Management


Wie kann ich das problem lösen? Wie kann ich ihm sagen dass er von " bis " in ein Element ablegen soll?


Danke und Grüsse
 
IFS=$'\n'
array=( `vmware-cmd -l`)
unset IFS

... man bash

edit: google: "ifs bash" ist wahrscheinlich eher aufschlussreich :P

wenns denn die bash ist von anderen shell hab ich kein plan
 
Zuletzt bearbeitet:
Hallo doc!

Danke vielmals! Klappt wunderbar! :)
 

Ähnliche Themen

Hilfe bei Scriptanpassung für VMWare 5.1 HA und USV Shutdown

Zeielenblock von einer Datei in eine neue schreiben

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

bash: Fehlermeldung und Werte in Array sortieren?

sed macht mich wahnsinnig :-(

Zurück
Oben