2016-04-07 4 views
-1

Ich würde gerne wissen, ob es möglich ist, den Dateinamen der Ausgabeumleitung als Parameter in bash zu bekommen?Wie Output-Redirect als Parameter in bash bekommen?

Zum Beispiel:

./myscript.sh parameter1 > outputfile 

Gibt es eine Möglichkeit "output" als Parameter wie 2 $ zu bekommen? In meinem Skript muss ich einige Operationen in der Ausgabedatei ausführen, aber ich weiß nicht, welche Datei ich aktualisieren muss ... Das zweite Problem ist, dass dieses Skript bereits läuft und von mehreren Aufgaben verwendet wird, so dass ich die Benutzereingabe nicht ändern kann. .

Mit freundlichen Grüßen

+0

Ich bin mir nicht sicher, ob ich das Problem verstehe. Ein Skript kann sicherlich zu einer Datei umleiten, deren Name als Parameter angegeben ist, wie in 'doSomething> $ 2; andSomeMore -foo $ 1 >> $ 2'. –

+0

Welche Operationen müssen Sie durchführen? Wenn Sie die Datei direkt manipulieren, könnte dies zu Konflikten mit der normalen Ausgabe führen, die in 'stdout' geschrieben wird. – Barmar

Antwort

0

Umleitungen sind für das Programm keine Parameter. Wenn die Ausgabe eines Programms umgeleitet wird, öffnet die Shell die Datei und verbindet den Dateideskriptor 2 damit, bevor das Programm ausgeführt wird. Das Programm schreibt dann einfach auf fd 2 (alias stdout) und es geht in die Datei.

Auf Linux und ähnlichen Systemen können Sie /dev/stdout verwenden, eine symbolische Verknüpfung zur Stdout-Datei des Prozesses.