Ruby Version Manager (RVM) wie folgt installiert:
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
Ich verstehe, was zuerst bedeutet (füttert Bash-Skript an Bash-Interpreter), ich bin mit <(...)
Teil verwechselt . Also, was Klammern hier tun und was weniger als Zeichen. In welchen Fällen können wir dieselbe Syntax verwenden?
Ich habe versucht, im Internet zu graben, fand diese SO-Frage /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces und diese Frage auf ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Sie haben jedoch noch keine Ahnung, warum wir diese Klammern verwenden und warum wir die Eingabeverleitung zweimal verwenden.
bash < curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer
ist das nicht dasselbe
Vielen Dank.
bash <(curl -s ...)
Antworten:
Es ist Prozesssubstitution . Es speist die Ausgabe des Befehls in ein FIFO ein, das wie eine normale Datei gelesen werden kann.
quelle
Es bedeutet "Führen Sie den Befehl in den Klammern aus und geben Sie hier einen Dateinamen zurück, der die Standardausgabe dieses Befehls darstellt".
Das bedeutet also zwei Befehle:
... wo "etwas" die Magie ist. (Normalerweise
/dev/fd/...
oder ein Rohr.)quelle