2016-07-22 15 views
1

Die folgende Wille Ausgabe auf stdout, wenn das Skript in einem Terminal ausgeführt wird:Wohin geht die Echoausgabe, wenn ein Bash-Skript ausgeführt wird?

echo "some message" 

Wenn das Skript von einem anderen Skript aufgerufen wird, wo der Ausgang geht? Ist ein erheblicher Aufwand verbunden?

Ich benutze GNU Bash, Version 4.3.33.

Vielen Dank

+3

Es – 123

+5

noch nach stdout geht Wenn ein Prozess (in diesem Fall, interaktive bash im Terminal ausgeführt wird) erzeugt einen Subprozess (Shell-Skript in diesem Fall), erbt der Subprozess die FDs vom übergeordneten Prozess. Es ist also dasselbe wie das stdout Ihrer interaktiven Shell; es sei denn, Sie haben das stdout in eine Datei oder eine Pipe umgeleitet. – anishsane

Antwort

1

Der Ausgang des

echo "some message" 

zum stdout außer (nicht ausschließlich) gehen sollte in Fällen, in denen

  1. Sie ao/p Umleitung haben, wie unten angegeben , die die echo Aussage beeinflussen.

    exec 1>/dev/null # 1 is the file descriptor for stdout, this should be before the echo 
    
    ./script >outfile # The whole output is redirected to a file 
    
  2. Sie haben eine do-nothing Richtlinie (:) vor dem Befehl echo

    : echo "some message" # Does nothing 
    
+0

Vielen Dank, besonders der Dateideskriptor für stdout; Ich nehme an, dass dies nützlich ist, um ALLE echo-Befehle in einem Skript mit einer einzigen Anweisung umzuleiten. – satuser083