Cygwin Gawk führt keine Pipe aus, wenn es explizit aufgerufen wird

Cygwin Gawk führt keine Pipe aus, wenn es explizit aufgerufen wird

Das ist die beste Beschreibung, die mir einfällt. Entschuldigen Sie, wenn sie etwas esoterisch ist.

Ich habe Cygwin auf Win 10, Build 16299, installiert, aber ohne Administratorberechtigung. Auf diesem PC gibt es keine Möglichkeit, es als Administrator zu installieren.

Wenn ich die folgende Zeile ausführe, wird es ausgeführt, wenn gawk über den PATH gefunden wird, aber nicht, wenn ich ihm explizit mitteile, wo die ausführbare Datei zu finden ist. Irgendwelche Vorschläge?

gawk "BEGIN { print \"echo Hello mum\" | \"./cygwin/sh\" }"
Hello mum

.\cygwin\gawk "BEGIN { print \"echo Hello mum\" | \"./cygwin/sh\" }"
gawk: cmd. line:1: fatal: can't open pipe `./cygwin/sh' for output (No such file or directory)

Das Cygwin-Verzeichnis ist eine Teilmenge der Cygwin-Befehle zusammen mit allen DLLs, die aus \cygwin64\bin\ kopiert wurden.

Antwort1

Angenommen, Sie führen den Befehl aus dem Verzeichnis „/home/user“ aus.

Wenn Sie es ausführen gawk, wird $CWD (aktuelles Arbeitsverzeichnis) auf gesetzt /home/user.

Wenn Sie ausführen, .\cygwin\gawkwird $CWD auf gesetzt /home/user/cygwin. In diesem Fall ./cygwin/shzeigt es auf /home/user/cygwin/cygwin.

Lass uns das versuchen:

.\cygwin\gawk "BEGIN { print \"echo Hello mum\" | \"./sh\" }"

verwandte Informationen