Donnerstag, 20. März 2014

Automatisches Umleiten des stdout/stderr in einem Shell Script

Üblicherweise schreibt ein Shell Script seine Meldungen auf stdout und gegebenenfalls auf stderr. Wenn diese statt dessen in ein File geschrieben werden sollen, wird das Script mit entsprechenden Umlenkungen gestartet:
script.sh > script.log 2> script.err
Soll das Script aber seine Meldungen von vornherein in Dateien schreiben (ggf. getriggert durch einen Parameter) kann man mit Hilfe des Befehls exec dies einstellen.
Ein Beispiel veranschaulicht dies am besten:

#!/usr/bin/env bash

echo Hallo

exec > logme.log 2> logme.err

echo Log

echo Error >&2