Am 13.2.2010 10:09, schrieb Heiko Schlittermann:
Weil Dein „while“ hinter eine Pipeline ist, ist es ein Sub-Process, also eine andere Shell.
Sowas hatte ich schon geahnt, nur fiel mir keine Lösung ein.
Das sollte es tun:
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 }
Werd ich mal probieren.
Alternativ könnte auch folgendes gehen: (hier läuft die while-Schleife dann in der „Parent“-Shell und das gocr/tac in einer Kindshell<(process substitution) wäre das Stichwort.
while read LINE; do …. done<(gocr scan.png | tac) echo "$OCR_DATA"> ocrdata.txt
So ähnlich hab ich es inzwischen gelöst: ... done << EOF $(gocr ...) EOF
Irgendwie wollte das ohne EOF bei mir direkt hinter done nicht klappen. Da war wohl ein < oder $ vor der Klammer zuviel bei mir.
… den Script kommentiere ich lieber nicht.
Ist auch nicht nötig. ;-)
Selbes Problem wie bei Dir.
Deshalb hab ich es ja drangehangen, damit hier keiner nach dem "Tippfehler" sucht, der es ja offensichtlich nicht war.
Danke.
Rico