Page 1 of 1

Konsole Fehlermeldung speichern/verarbeiten

Posted: 16. Apr 2013 12:52
by ups
Hallo Leute,

habe ein Problemchen, das stderr nicht in eine Variable will oder sich verarbeiten lässt:
Also es sollen die nicht formatierten Partition erfasst werden.
Die Idee:

Code: Select all

fdisk -l |grep /dev/xyz[b-z] |grep doesn.t.contain.a.valid.partition.table
Es kommt hier die erwartete Meldung auf dem Bildschirm.

Aber iich kann diese nur in eine Datei speichern, nicht aber mit VAR=`fdisk...` oder VAR=$((fdisk...)) in eine Varable speichern kann. Ebenso wenig funktionier das Zählen mit |wc -l, auch nicht mit 2>$1|wc -l.
Also

Code: Select all

fdisk -l |grep /dev/xyz[b-z] |grep doesn.t.contain.a.valid.partition.table 2>&1|wc -l
0  0  0
genauso bleibt die Variable leer::

Code: Select all

VAR=`fdisk -l |grep /dev/xyz[b-z] |grep doesn.t.contain.a.valid.partition.table`
Ich kann diese nur mit Aufruf von

Code: Select all

fdisk -l 2>fehler-temp.txt
in eine Datei speichern.
Aber nicht mit

Code: Select all

fdisk -l |grep /dev/xyz[b-z] |grep doesn.t.contain.a.valid.partition.table 2>geht-nicht.txt

Gute Ideen? Danke ...
ups

Posted: 16. Apr 2013 13:04
by Janka
Öhm, du leitest da das stderr des letzten *grep* zu stdout um, nicht stderr von fdisk.

Janka

ja

Posted: 16. Apr 2013 17:50
by ups
.. aber trotzdem geht keine der Zeilen in ene Variable zu speichern, lediglich die Vorletzte in eine Datei....

ups

Posted: 16. Apr 2013 18:27
by Janka
Dann nochmal in einfach: Du möchtest das stderr von fdisk haben, und darin dann greppen. Das macht man so:

Code: Select all

fdisk -l 2>&1|grep /dev/xyz[b-z] |grep doesn.t.contain.a.valid.partition.table
Wenn du 2>&1 dem grep zu fressen gibst, wird stderr von *grep* nach stdout umgeleitet. Grep produziert auf stderr aber nur dann einen Fehler, wenn du falsche Optionen angibst oder eine Eingabedatei nicht existiert.

Janka

cool

Posted: 17. Apr 2013 7:32
by ups
Uff, ich bin beeindruckt.
Das stderr nicht global wirkt...wieder was dazu gelernt, danke.
Nun iss's in der Variable eingesperrt ;-)

ups