PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehr zeiliges std-output in variable speicher, wie??



cArN4g3
24-09-2003, 17:30
hi leute,

diesmal nur ne kurze frage.

wie kann man die mehrzeilige ausgabe eines programmes in einer variable so speichern, dass man entweder wort oder zeilen weise drauf zugreifen kann??

es geht um shell-scripting mit der bash...

mfg carn

ps: durch suchen bei google,etc, hab ich rausgefunden, wie man den output ueberhaupt in variablen speichern kann, naemlich var=`programmaufruf`, aber leider werden mehrzeilige ausgaben einfach in eine zeile hintereinander geschrieben, was nicht dem entspricht, was ich erreichen wollte.

Hans-Georg Normann
24-09-2003, 18:09
Ich weiß zwar nicht genau was du erreichen willst, aber versuchen wir's doch mal:

Hast du Python installiert? Da gäbe es ne Möglichkeit mit popen, popen2 oder popen3 zu arbeiten.

Kannst das ganze auch in eine temporäre Datei umleiten und dann beispielsweise mit awk oder was auch immer auslesen und verarbeiten.

cArN4g3
24-09-2003, 18:18
hallo,

naja von phyton hab ich leider null ahnung, und das is schon nett ausgedrueckt.

in eine temporaere datei das ganze umzuleiten wuerde mein problem beheben, jedoch beim durchlaufen des scriptes eine datei mehrere hundert mal mit jeweils anderer groesse neuschreiben --> is mir zu viel bewegung im fs

mfg carn

fork
24-09-2003, 20:13
z. B.

$AUSGABE=$(find /var/log)
for variable in $AUSGABE
do
echo $variable
done

Hans-Georg Normann
24-09-2003, 20:35
Original geschrieben von cArN4g3
naja von phyton hab ich leider null ahnung, und das is schon nett ausgedrueckt. Naja, die meisten haben Windows gelernt, dann sollte Python doch wohl kein Prob sein:D

ich habe hier mal ein lauffähiges script. Dann kannst du selbst entscheiden, ob du dich damit abgeben möchtest oder nicht
#!/usr/bin/python
import os
_stdin, _stdout, _stderr = os.popen3("ls -l /home/hans")
for _s in _stdout.readlines():
print _s.strip()
for _s in _stderr.readlines():
print _s.strip()
_stderr.close()
_stdout.close()
_stdin.close()
Brauch wohl nicht zu erklären, dass die Variable _s natürlich auch nach worten zerlegt werden kann.

Hans

sagi
24-09-2003, 21:02
$AUSGABE=$(find /var/log)
for variable in $AUSGABE
do
echo $variable
done

dann kannst du auch gleich:



for variable in `command`
do
echo $variable
done

cArN4g3
24-09-2003, 21:54
hi leute,

ich will euch erstmal danken fuer die hilfreichen antworten :)

bitte nicht ueber einen evtl. komisch aussehenden post wundern, mein X geht grad net, und ich probiere gerade "links" aus, ein lustiger consolen-browser, sehr zu empfehlen!!

die links werden sicherlich auch hilfreich sein, mal schaun!

phyton sah eigentlich recht simpel aus und ich werd es mir auf jedenfall mal auf meiner box anschauen, aber fuer den eigentlichen sinn, fuer den ich das script geplant haben, naemlich "der ausfuehrung unter cygwin @ work" werd ich das wohl net verwenden koennen, oder laeuft die sprache auch unter cygwin?

mfg carn

Hans-Georg Normann
24-09-2003, 22:00
Original geschrieben von cArN4g3
......., naemlich "der ausfuehrung unter cygwin @ work" werd ich das wohl net verwenden koennen, oder laeuft die sprache auch unter cygwin?Genau so ist es! schau mal bei http://python.sandtner.net (Deutsches Python Forum) vorbei oder auf http://www.python.org