Co oznacza skrót bash <<?

11

Ruby Version Manager (RVM) zainstalowany tak:

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

Rozumiem, co oznacza najpierw (podaje skrypt bash do interpretera bash), jestem mylony z <(...)częścią. Więc co nawiasy robią tutaj i znak mniej niż. W jakich przypadkach możemy użyć tej samej składni?

Próbowałem kopać w Internecie, znalazłem to SO pytanie /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces i to pytanie na ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Ale nadal nie mam pojęcia, dlaczego używamy tych nawiasów i dlaczego używamy przekierowania wejściowego dwa razy.

bash < curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer

to nie to samo?

Dzięki.

Nemoden
źródło
Myślę, że lepsze pytania bash <(curl -s ...)
brzmią
polecenie <(...) działa, gdy polecenie akceptuje nazwę pliku w tej lokalizacji. Jeśli wstawisz przed nim inny <, polecenie musi zaakceptować dane wejściowe ze standardowego wejścia. Niektóre polecenia będą działać w obu kierunkach i będą używać stdin, jeśli nie podano nazwy pliku. Przyjęta odpowiedź wskazuje na tę różnicę.
Lee Meador

Odpowiedzi:

8

To podstawienie procesu . Przekazuje on wynik polecenia do FIFO, z którego można odczytać jak normalny plik.

Ignacio Vazquez-Abrams
źródło
6

Oznacza to: „uruchom polecenie w nawiasach i zwróć tutaj nazwę pliku reprezentującą standardowe wyjście tego polecenia”.

To przekłada się na dwa polecenia:

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

... gdzie „coś” to magia. (Zwykle /dev/fd/...lub fajka.)

Daniel Pittman
źródło
3
ale dlaczego nie mogę po prostu użyć curl ... | bash -s stabilny?
Lilás