Ich habe ein Bash-Skript, das normalerweise funktioniert wie folgt:einen Befehl in der Parameterliste eines anderen Befehls in bash Substituieren
[...]
file=$1
docommand $x $y $file $z
aber ich möchte eine Option, um das Skript hinzuzufügen, es zu sagen, würde Holen Sie die Daten von einem Befehl mit einem anonymous named pipe anstelle der Datei. Dh, würde Ich mag, etwas zu tun
file=<(anothercmd arg1 $1 arg3)
annähert und habe meine
docommand $x $y $file $z
erweitern
docommand $x $y <(anothercmd arg1 $1 arg3) $z
Gibt es eine Möglichkeit, die Angabe richtig zu machen, das zu erreichen, ?
Für einen konkreteren Kontext betrachtet das Skript Ausgabeprodukte aus Regressionstests, die normalerweise aus einer Datei mit der erwarteten Ausgabe entfernt werden. Ich möchte optional eine Revision und ein diff zu dem dann erwarteten Ergebnis übergeben, also würde diff $from $to
zu diff <(hg cat -r $fromrev $from) $to
erweitern.
"anonymous Named Pipe" ... ist das nicht ein komischer Name? –
Der korrekte Ausdruck ist * Prozesssubstitution *. Welches Problem hast du beim Zitieren? Die Regeln zum Zitieren unterscheiden sich nicht von der Verwendung von Prozesssubstitution an anderer Stelle. – cdarke
Ich glaube nicht, dass du es schaffen kannst. Die benannte Pipe, die für die Prozesssubstitution verwendet wird, ist temporär und verschwindet am Ende der Befehlszeile, an der sie verwendet wird. – Barmar