Ist es möglich, Dateideskriptoren (z. B. stderr
) in bash neu zu definieren?Wie kann ich stdout/stderr in bash umdefinieren?
Ich möchte alle Ausgabe standardmäßig in eine Datei senden, während immer noch die ursprünglichen stderr
und stdout
verwenden können.
#!/bin/bash
echo "Error: foo bar" 1>2
REAL_STDERR=2
REAL_STDOUT=1
2=open("/tmp/stderr.log")
1=open("/tmp/stdout.log")
echo "This goes to stdout.log"
if ! curl doesntexist.yet; then
echo "Error: Unable to reach host. See stderr.log for details" 1>REAL_STDERR
fi
Als Neben - Großbuchstaben-Namen sind für Variablen mit der Bedeutung für das Betriebssystem oder Shell selbst angegeben, während Kleinbuchstaben Namen für die Verwendung der Anwendung reserviert sind. Weitere Informationen finden Sie unter http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html. Beachten Sie dabei, dass Umgebungsvariablen und Shellvariablen einen Namespace teilen (wenn Sie eine Shellvariable zuweisen, die den Namen einer vorhandenen Umgebungsvariablen überlagert, wird letztere überschrieben), so dass die Namenskonventionen notwendigerweise für beide gelten. –
Danke, das wusste ich nicht. –