Apa bash <<syntax artinya?

10

Ruby Version Manager (RVM) diinstal seperti ini:

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

Saya mengerti apa yang pertama <maksud (feed bash script to bash interpreter), saya bingung dengan <(...)bagian mana. Jadi, apa yang dilakukan tanda kurung di sini dan tanda kurang dari Dalam kasus apa kita bisa menggunakan sintaks yang sama?

Saya mencoba menggali di internet, menemukan pertanyaan SO ini /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces dan pertanyaan ini di ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Tetapi masih tidak tahu mengapa kami menggunakan tanda kurung itu dan mengapa kami menggunakan pengalihan input dua kali.

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

tidak sama?

Terima kasih.

Nemoden
sumber
Saya pikir pertanyaan yang lebih baik adalah: Mengapa ini samabash <(curl -s ...)
Bruno Bronosky
command <(...) berfungsi ketika perintah menerima nama file di lokasi itu. Jika Anda meletakkan yang lain <sebelum perintah harus menerima input dari stdin. Beberapa perintah akan berfungsi baik dan menggunakan stdin jika tidak ada nama file yang diberikan. Jawaban yang diterima mengisyaratkan perbedaan ini.
Lee Meador

Jawaban:

7

Ini proses substitusi . Ini memberi makan output dari perintah ke FIFO yang dapat dibaca dari seperti file normal.

Ignacio Vazquez-Abrams
sumber
5

Ini berarti "jalankan perintah di dalam tanda kurung, dan kembalikan nama file yang mewakili output standar dari perintah itu di sini".

Jadi, itu diterjemahkan menjadi dua perintah:

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

... di mana "sesuatu" adalah keajaiban. (Biasanya, /dev/fd/...atau pipa.)

Daniel Pittman
sumber
3
tapi kenapa saya tidak bisa menggunakan ikal saja ... | bash -s stabil?
Lilás