Was bedeutet Bash << Syntax?


10

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.


Ich denke, die besseren Fragen sind: Warum ist das sobash <(curl -s ...)
Bruno Bronosky

Befehl <(...) funktioniert, wenn der Befehl einen Dateinamen an dieser Stelle akzeptiert. Wenn Sie ein anderes <davor setzen, muss der Befehl Eingaben von stdin akzeptieren. Einige Befehle funktionieren in beide Richtungen und verwenden stdin, wenn kein Dateiname angegeben ist. Die akzeptierte Antwort weist auf diesen Unterschied hin.
Lee Meador

Antworten:



5

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:

curl ... > something
bash -s stable < something

... wo "etwas" die Magie ist. (Normalerweise /dev/fd/...oder ein Rohr.)


3
aber warum kann ich nicht einfach locken verwenden ... | Bash -s stabil?
Lilás
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.