in bash/zsh macht das Ausgabeverhalten als Datei. Existiert ein POSIX-Äquivalent?POSIX-Shell entspricht <()
Antwort
mkfifo foo.fifo
## if your "commands" is multiple commands
# { commands ...; } >foo.fifo &
# otherwise, if it's just one
commands ... >foo.fifo &
something_else foo.fifo
ist die nächste verfügbare entspricht
something_else <(commands ...)
Mögliche "Robustheit" -Verbesserungen wären, etwas wie "mktemp" zu verwenden, um ein Verzeichnis für eine oder mehrere Pipes zu erzeugen, die vor Kollisionen sicher sind (oder einfach einen Namen für die Pipe zu generieren, da 'mkfifo' atomar ist) usw. In Wirklichkeit ist das alles "<(...)" hinter den Kulissen: Es ist nur syntaktischer Zucker für eine robustere Variante dieser Antwort. – mtraceur
@mtraceur, das ist '<(...)' tut hinter den Kulissen * auf Plattformen, auf denen '/ dev/fd' nicht verfügbar ist *; es verwendet 'pipe (2)' anonyme Deskriptorpaare, wo es ist. –
Rechts. Danke für die Korrektur - das habe ich vergessen. – mtraceur
[POSIX spezifiziert nicht, Prozess-Substitution, aber Sie können Named Pipes verwendet, um das Gleiche zu erreichen.] (Http://mywiki.wooledge.org/ProcessSubstitution) – bishop
Mögliches Duplikat von [Ist es möglich, Prozesssubstitution auf msys/mingw (mit bash 3.x) nachzuahmen] (http://stackoverflow.com/questions/20866832/is-it-possible-to-mimi- process-substitution-auf-msys-mingw-with-bash-3-x) –
@PP, ich mag diese spezifische potentielle Täuschung nicht wirklich, da sie einige Missverständnisse auffaltet (unter ihnen, dass b Asche 3.x * unterstützt keine Prozesssubstitution; Das ist eine msys-Einschränkung, im Gegensatz zu einer versionsbasierten. –