Ich schreibe ein Shell-Skript, das die STDOUT
und STDERR
Ausgabe eines Programms umleitet. Das Ziel der Weiterleitung ist eine Variable. Normalerweise ist das Ziel eine Datei, in diesem Fall funktioniert das Folgende gut.Unterstützt sowohl FD-Nummer und Dateinamen parametrisierte Umleitungen
simple_redirect()
{
myfunc=$1
myfile=$2
myfunc &>myfile
}
simple_redirect ls text.txt
Aber manchmal möchte ich nicht in eine Datei umleiten, sondern STDOUT
wie normale drucken möchten. Wenn myfile
&1
für STDOUT
ist, bekomme ich folgende Fehlermeldung: $myfile: ambiguous redirect
Wenn ich den Befehl ls &>&1
laufen, ich sehe: parse error near '&'
.
Ich habe von einer Vermeidung des Problems gedacht, durch STDOUT
und STDERR
getrennt Umleitung: ls 1>&1 2>&1
. Allerdings mag ich diese Option weniger, da ich die Variable wiederverwenden muss und sie weniger lesbar ist. Gibt es einen einfacheren Weg, dies zu tun?
Welche ** präzise ** Shell? Nicht nur welche Shell, sondern welche * Release *? POSIX spezifiziert nicht '&>' überhaupt, und die Fähigkeit, eine Variable mit einer FD-Nummer auf der rechten Seite einer Umleitung in bash zu verwenden, ist eine aktuelle Erweiterung (4.x-Serie). –
BTW, was macht '&> & 1' das' 2> & 1' nicht? '1> & 1' ist komplett redundant, immerhin - stdout * bereits * unterstützt per Definition stdout. –
Vielleicht meinst du '&>" $ myfile "', übrigens? Das ist eine ganz andere Sache als '&> myfile'. –