Sie benötigen eine Möglichkeit, STDOUT vorübergehend umzuleiten

7

Ich weiß, wie man Ausgaben in Linux umleitet. Das ist, ich habe eine Menge Ausgaben in meinem Bash-Skript und ich möchte nicht etwas wie

eingeben %Vor%

immer und immer wieder. Ich würde viel lieber etwas tun wie:

%Vor%

Ich habe versucht, FD 1 als Datei zu öffnen:

%Vor%

Aber ich konnte STDOUT nicht wieder normalisieren, als ich fertig war. Schließen der Datei

%Vor%

gab mir Fehler, die ich nicht umgehen konnte.

Irgendeine Möglichkeit, dies zu tun? Danke!

    
bob.sacamento 05.11.2012, 19:00
quelle

2 Antworten

15

Sie müssen zuerst stdout speichern (indem Sie es zum Beispiel auf fd # 4 verlinken)

  

exec 4 & lt; & amp; 1

Umleiten stdout

  

exec 1 & gt; Leiste

Und gespeicherte stdout wiederherstellen

  

exec 1 & lt; & amp; 4

    
vladz 05.11.2012, 19:19
quelle
6

Es gibt wahrscheinlich mehrere Möglichkeiten, um das zu tun, was Sie wollen, aber wahrscheinlich wäre die einfachste eine Subshell oder eine Befehlsgruppe:

%Vor%

Das ( ... ) -Konstrukt ist eine Untershell; Die Verwendung von { ... } ist etwas leichter, da es sich nur um eine Gruppe von Befehlen handelt. Was zu bevorzugen wäre, hängt davon ab, ob Variablen, die innerhalb der Gruppe zugewiesen wurden, in erster Linie beibehalten werden sollen, obwohl es auch ein paar andere Unterschiede gibt ...

    
twalberg 05.11.2012 19:13
quelle

Tags und Links