Fehlerkanal in Variable umleiten?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von don_corleone, 12.12.2006.

  1. #1 don_corleone, 12.12.2006
    don_corleone

    don_corleone Guest

    Hallo,

    gibt es eine Möglichkeit den Fehlerkanal eines gerade ausgeführten Befehls im Script in eine Variable umzuleiten und nicht am Bildschirm auszugeben?

    In den gefundenen Anleitungen habe ich leider nur Möglichkeiten gefunden, die Fehlermeldungen in eine Datei umzuleiten oder eben auf /dev/null.

    Wäre für eure Hilfe sehr dankbar.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 damager, 12.12.2006
    damager

    damager Moderator

    Dabei seit:
    27.08.2003
    Beiträge:
    3.065
    Zustimmungen:
    0
    Ort:
    Munich
    evtl. erst in eine temp-datei umleiten und dann per echo oder cat in der variable ablegen....nur so als schnelle idee.
     
  4. #3 don_corleone, 12.12.2006
    don_corleone

    don_corleone Guest

    Danke für die schnelle Antwort.

    So werd ichs wohl vorübergehend auch machen, dachte jedoch, vielleicht weiß jemand, wie man das gleich direkt in eine Variable kriegt?
     
  5. #4 Schlaubi_fi.de, 12.12.2006
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Hallo,

    meinst Du sowas (Stderr nach Stdout umleiten)?

    Code:
    stderr=""; stderr="$(ichproduziereeinenfehler 2>&1)"; echo $stderr
     
  6. #5 don_corleone, 13.12.2006
    don_corleone

    don_corleone Guest

    Ok, besten Dank!

    Gibts auch eine Möglichkeit den Fehlerkanal für alle Befehl im Script generell zu unterdrücken?
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Code:
    (ls bi; ls ba; ls bo) 2> /dev/null
    
    Gruss, Xanti
     
  8. #7 don_corleone, 13.12.2006
    don_corleone

    don_corleone Guest

    Danke Xanti,

    aber ich rufe in einem Script ein anderes Unterscript auf, in welchem etliche Befehle ausgeführt werden. Ich möchte in diesem Unterscript alle Fehler unterdrücken.

    Muss ich da bei jedem einzelnen Befehl "2> /dev/null" anhängen oder gibts da eine bessere, einfachere Mögilchkeit?

    Wenn ich "2> /dev/null" beim Aufrufen des Unterscripts anhänge, wird ja nur ein evtl. Fehler, welchen das Unterscript zurückgibt unterdrückt, oder?
     
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wie gesagt, wenn Du die Befehle in einer Subshell ausführt, und das macht man mittels (...), dann reicht eine Umleitung. Alternativ kannst Du auch /dev/stderr manipulieren, wovon ich aber stark abraten würde. Fehler sind nicht dazu da Dich zu nerven, sondern um Dich auf einen Misszustand hinzuweisen. Bekämpfe die Ursache, nicht die Wirkung.

    Nein.
     
  10. #9 don_corleone, 13.12.2006
    don_corleone

    don_corleone Guest

    Wie kann ich mein Unterscript in einer Subshell aufrufen? Oder wie genau meinst du das? Kannst mir bitte etwas auf die Sprünge helfen. Wie müsste der Aufruf des Unterscripts dann im Code aussehen?
     
  11. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Dein Unterskript wird automatisch in einer Subshell gestartet. Wenn Du mehrere Befehle in einer Subshell aufrufen willst, musst Du diese in Klammern einschließen. Mehr dazu unter "man bash".
     
  12. #11 Schlaubi_fi.de, 13.12.2006
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Wie wahr... :oldman
     
  13. #12 don_corleone, 15.12.2006
    don_corleone

    don_corleone Guest

    Leider funktioniert das ganze bei mir noch immer nicht wie gewollt.

    Also ich habe ein Script abc.sh in dem das Unterscript xyz.sh aufgerufen wird:
    Code:
    echo "Test"
    xyz.sh
    echo "Test 2"
    
    Das Unterscript xyz.sh sieht folgendermaßen aus:
    Code:
    mkdir /test1
    mkdir /test2
    
    Falls im Unterscript xyz.sh der mkdir Befehl einen Fehler ausgibt, sollte dieser auf keinen Fall ausgegeben werden. Wie lautet dazu der richtige Aufruf des Unterscripts im Hauptscript? "xyz.sh 2> /dev/null" funktioniert leider nicht.

    Ich könnte zwar an jeden Befehl im Unterscript "2> /dev/null" anhängen, aber es muss doch auch eine andere Möglichkeit geben, oder?

    Ich weiß, dass man Fehler grundsätzlich vermeiden sollte, aber in diesem Fall dürften eben die User nichts von den Fehlern sehen - falls wirklich welche auftreten sollten!

    Die 2 Scripts dienen nur zur Veranschaulichung, am System sind diese natürlich viel komplexer.
     
  14. hwj

    hwj Doppel-As

    Dabei seit:
    23.06.2006
    Beiträge:
    131
    Zustimmungen:
    0
    Ort:
    Bei Buxtehude
    Code:
    #!/bin/sh
    echo "Test"
    xyz.sh > /dev/null 2>&1
    echo "Test 2"
    Heiko

    PS: Welche Shell benutzt Du denn ? Bei mir tuts auch "2> /dev/null" ...
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Schlaubi_fi.de, 15.12.2006
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Das ist klassisch falsch! Manche Fehler kann man eben nicht vermeiden, wichtig ist die Fehler so gut wie möglich abzufangen!
    Sag mir mal bitte wie Du das dann mitkriegen willst, dass es beim Erstellen des Verzeichnisses ein Problem gab??? Solang sich kein User meldet und meckert denkst Du einfach alles ist okay? ?(
     
  17. #15 don_corleone, 16.12.2006
    don_corleone

    don_corleone Guest

    Die Fehler sollen ja vorher schon abgefangen werden, durch andere Abfragen.
    Erst wenn alles ok ist, wird zB das Verzeichnis erstellt, falls jedoch trotzdem (warum auch immer) ein Problem dabei auftreten sollte, will ich diesen Fehler einfach nicht sichtbar für den User machen! Ist das so schwer zu verstehen?
    Ich kriege dann sehr wohl durch andere Routinen mit, dass Probleme aufgetreten sind.
     
Thema: Fehlerkanal in Variable umleiten?
Besucher kamen mit folgenden Suchen
  1. unix fehlermeldung in variable umleiten

    ,
  2. unix shell Standard fehlerkanal generell

    ,
  3. bash stderr variable

Die Seite wird geladen...

Fehlerkanal in Variable umleiten? - Ähnliche Themen

  1. KSH: Problem beim Umleiten des Fehlerkanals

    KSH: Problem beim Umleiten des Fehlerkanals: Hallo, in einen KSH Skript führe ich folgende Befehle aus RESULT=""; ERROR=""; idsldapsearch -h localhost -p $PORT -D $USER -w $PW -s sub -b...
  2. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  3. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  4. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  5. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...