Good to Know Database

Shell-Programmierung: Überprüfen ob eine Pipe Daten enthält


Mit der folgenden Funktion können Sie in einem Shell-Skript überprüfen ob über eine Pipe Daten an einen Befehl weitergereicht werden.

Wenn Sie zum Beispiel den folgenden Befehl in einem Shell-Skript verwenden, wird auch dann eine E-Mail an den Benutzer georg gesendet, wenn das Suchmuster nicht in der Textdatei source.txt gefunden wurde. Wird das Suchmuster gefunden, wird zusätzlich das Ergebnis von grep in die E-Mail eingefügt.

grep "search for this string" source.txt | mail -s "String found in the file" georg

Durch die folgende Funktion können Sie die über die Pipe übertragen Daten überprüfen und entsprechend weitere Funktionen aufrufen.

function pipe_not_empty()
  {
    input=$(cat)
    if [ "$input" != "" ] ; then
      { printf '%s\n' "${input}"; } | "$@"
    fi
  }

Um das bereits oben verwendete Beispiel weiterzuführen, wird der Befehl wie folgt erweitert. Dadurch wird jetzt nur dann eine E-Mail versendet, wenn das Suchmuster in der Textdatei gefunden wurde.

grep "search for this string" source.txt | pipe_not_empty mail -s "String found in the file" georg


Dieser Eintrag wurde am 26.05.2012 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_7_1635.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer