Piping an einen Prozess, wenn der Prozess nicht existiert?

8

Sagen wir, ich beginne mit der folgenden Anweisung, die echo -s eine Zeichenfolge in den Äther:

%Vor%

Ich reiche dann die folgende Pipeline ein:

%Vor%

Ich lasse dann den Prozess aus:

%Vor%

Warum gibt dies keine Fehlermeldung zurück? Die Dokumentation zu Bash und Piping scheint die Ursache nicht direkt zu erwähnen. Wird vor dem ersten Lesevorgang von echo (oder was auch immer der Prozess ist, der vor der Pipe läuft) ein EOF gesendet?

    
Alex Reynolds 13.05.2017, 01:41
quelle

1 Antwort

8

Ein einfacher shell-Befehl ist nicht erforderlich, um einen Befehlsnamen zu haben. Für einen Befehl ohne einen Befehlsnamen:

  • Variablenzuweisungen gelten für die aktuelle Ausführungsumgebung. Im Folgenden werden zwei Variablen für die Argumentwerte festgelegt:

    %Vor%
  • Umleitungen erfolgen in einer Subshell, aber die Subshell tut nichts anderes als die Umleitung zu initialisieren. Das Folgende wird die angegebene Datei abschneiden oder erstellen (wenn Sie die entsprechenden Berechtigungen haben):

    %Vor%

Ein Befehl muss jedoch mindestens ein Wort enthalten. Ein komplett leerer Befehl ist ein Syntaxfehler (weshalb gelegentlich : verwendet werden muss).

Antwort zusammengefasst von Posix XCU§2.9.1

    
rici 13.05.2017 01:56
quelle

Tags und Links