Konsole Fehlermeldung speichern/verarbeiten

Antworten
Nachricht
Autor
ups

Konsole Fehlermeldung speichern/verarbeiten

#1 Beitrag von ups » 16. Apr 2013 12:52

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: Alles auswählen

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: Alles auswählen

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: Alles auswählen

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

Code: Alles auswählen

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

Code: Alles auswählen

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

Gute Ideen? Danke ...
ups

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 16. Apr 2013 13:04

Öhm, du leitest da das stderr des letzten *grep* zu stdout um, nicht stderr von fdisk.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ups

ja

#3 Beitrag von ups » 16. Apr 2013 17:50

.. aber trotzdem geht keine der Zeilen in ene Variable zu speichern, lediglich die Vorletzte in eine Datei....

ups

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 16. Apr 2013 18:27

Dann nochmal in einfach: Du möchtest das stderr von fdisk haben, und darin dann greppen. Das macht man so:

Code: Alles auswählen

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
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ups

cool

#5 Beitrag von ups » 17. Apr 2013 7:32

Uff, ich bin beeindruckt.
Das stderr nicht global wirkt...wieder was dazu gelernt, danke.
Nun iss's in der Variable eingesperrt ;-)

ups

Antworten