Що означає bash <<синтаксис?


11

Менеджер версій Ruby (RVM) встановлений так:

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

Я розумію, що перший <mean (подає bash script до bash interpreter), я плутаю його з <(...)частиною. Отже, що тут роблять дужки і менше, ніж підписують. У яких випадках ми можемо використовувати один і той же синтаксис?

Я спробував копатися в Інтернеті, знайшов це ТАКЕ питання /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces і це питання про ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Але досі не маю уявлення, чому ми використовуємо ці круглі дужки і чому ми використовуємо перенаправлення вводу двічі.

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

хіба не те саме?

Дякую.


Я думаю, що кращі питання: Чому це те самеbash <(curl -s ...)
Бруно Броноський,

команда <(...) працює, коли команда приймає ім'я файлу в цьому місці. Якщо ви поставите інше <перед ним, команда повинна прийняти вхід від stdin. Деякі команди будуть працювати в будь-якому випадку і використовувати stdin, якщо не вказано ім'я файлу. Прийнята відповідь натякає на цю різницю.
Лі Медор

Відповіді:



6

Це означає "запустити команду всередині дужок і повернути ім'я файлу, що представляє тут стандартний вихід цієї команди".

Отже, це перекладається на дві команди:

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

... де "щось" - це магія. (Як правило, /dev/fd/...або труба.)


3
але чому я не можу просто використовувати curl ... | bash -s стабільний?
Лілаш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.