ich muss aus einem Script, welches ich aus Performancegr�nden in der
"dash" ausf�hren will, eine Datei einlesen, die so aufgebaut ist:
WERT[0]=xxxx
WERT[1]=yyyy
In der Bash habe ich das einfach via "source" eingelesen. Die "dash"
verweigert allerdings die Eintr�ge als Variablen (wohl wegen der eckigen
Klammern).
Schlimmstenfalls w�rde ich die dash f�r meine Zwecke patchen, sodass die
eckigen Klammern akzeptiert werden. Array-Funktionen selbst brauche ich
nicht. Sch�ner w�re es aber, wenn man es sauberer l�sen k�nnte...
Danke f�r jeden Tipp.
CU
Manuel
--
Alle wollen zur�ck zur Natur - aber keiner zu Fu�
Der Mensch erfand Maschinen, um sich damit die Arbeit zu erleichtern.
Nur leider hat er vergessen, rechtzeitig damit aufzuh�ren...
Beitr�ge mit *X-No-Html Header* kann ich weder lesen, noch beantworten!
> ich muss aus einem Script, welches ich aus Performancegr�nden in der
> "dash" ausf�hren will, eine Datei einlesen, die so aufgebaut ist:
>
> WERT[0]=xxxx
> WERT[1]=yyyy
>
> In der Bash habe ich das einfach via "source" eingelesen. Die "dash"
> verweigert allerdings die Eintr�ge als Variablen (wohl wegen der eckigen
> Klammern).
>
> Schlimmstenfalls w�rde ich die dash f�r meine Zwecke patchen, sodass die
> eckigen Klammern akzeptiert werden. Array-Funktionen selbst brauche ich
> nicht.
Wenn Arrays also gar nicht ben�tigt werden?:
Vorher die Arrays in der Datei mit sed in normale Variablen umschreiben?
Wenn die Performance so wichtig ist, aber der betr�chtliche Aufwand,
eine Shell zu patchen, in Betracht kommt:
Zumindest im relevanten Teil auf awk/perl/o.�. zur�ckgreifen?
> ich muss aus einem Script, welches ich aus Performancegründen in
> der "dash" ausführen will, eine Datei einlesen, die so aufgebaut ist:
>
> WERT[0]=xxxx
> WERT[1]=yyyy
sed 's;\[\([0-9][0-9]*\)\]=;\1=;' datei >datei..
. ./datei..
rm datei..
--
printf -v email $(echo \ 155 141 162 143 145 154 142 162 165 151 \
156 163 155 141 100 171 141 150 157 157 056 143 157 155|tr \ \\\\)
# Live every life as if it were your last! #
> sed 's;\[\([0-9][0-9]*\)\]=;\1=;' datei >datei..
> . ./datei..
> rm datei..
Die Datei wird dynamisch generiert und nein, ich habe keinen Einfluss
auf das Format.
> ich muss aus einem Script, welches ich aus Performancegründen in der
> "dash" ausführen will, eine Datei einlesen, die so aufgebaut ist:
>
> WERT[0]=xxxx
> WERT[1]=yyyy
Mehr Infos über die Zielsetzung der Aktion wären hilfreich.
Vllt. hilft es ja, die Daten anders anzuordnen?
bash -c "source wertliste; echo \"\${WERT[*]}\""
oder
bash -c "source wertliste; IFS=$'\n'; echo \"\${WERT[*]}\""
Leo
Hüh? Aber wenn da doch eine dynamisch generierte Datei ist, warum geht
obiger Vorschlag nicht?
Wenn Dich die Performanceeinbuße stört, dann kannst Du das Konvertieren
mit sed und das Einlesen ja nebenläufig gestalten. Etwa indem Du sed im
Hintergrund machen lässt.
Klar, geht. Ich hatte das als Aufforderung verstanden, die Datei zu
konvertieren und die alte Datei zu l�schen. Klar geht es �ber eine
tempor�re Datei. Auch m�glich scheint mir das:
while read line; do eval $line; done <<EOF
$(sed 's/\[\([0-9][0-9]*\)\]=/\1=/' datei)
EOF
Komisch nur, dass es die Schleife braucht, denn ein "eval $(sed...)" tut
nicht.