Hallo,
ich hab das Problem, daß eine in der Schleife veränderte Variable außerhalb der Schleife nicht verändert wurde:
OCR_DATA="X" gocr scan.png | tac | while read LINE; do OCR_DATA="$OCR_DATA:$LINE" echo "$LINE" >> while.txt done echo "$OCR_DATA" > ocrdata.txt
gocr hat Daten erkannt und die werden auch in while.txt geschrieben. In ocrdata.txt kommt aber nur das vor der Schleife gesetzte X an.
Die beiden Textdateien sind nur zum Test, ich brauche letztlich nur den Wert aus OCR_DATA und das was sonst noch zeilenweise in der Schleife erzeugt wird. Die Daten sollen nicht erst auf die Platte geschrieben werden. Der String soll nur zur Kontrolle in eine DB geschrieben werden
Bei meiner Recherche bin ich an anderer Stelle auf das selbe Problem gestoßen, aber nicht auf eine Lösung:
http://www.netzmafia.de/skripten/unix/unix8.html ... Speicherbelegung Das Skript 'lsum' berechnet aus dem ls-Kommando den Gesamtspeicherplatz der ausgewählten Dateien. Einfacher geht es aber mit 'du'.
#!/bin/sh # Calculate the amount of space used by the specified files # Default is the actual directory SUM=0 TMPF=$HOME/$0$$ ls -l $* >$TMPF while read D1 D2 D3 D4 D5 REST ; do # lesen aus TMPF # Feld 5 enthaelt Groesse SUM=`expr $SUM + 0$D5 / 1024` done < $TMPF echo "$SUM KBytes" rm $TMPF
Preisfrage: Warum funktioniert folgende Variante nicht?
#!/bin/sh SUM=0 ls -l | while read D1 D2 D3 D4 D5 REST ; do SUM=`expr $SUM + 0$D5 / 1024` done echo "$SUM KBytes" ...
Hat hier vielleicht jemand eine Idee, woran das liegt?
Gruß Rico