Что такое синтаксис `<<()`? - PullRequest
13 голосов
/ 20 мая 2011

Я уже некоторое время использую RVM, и каждый раз, когда я просто копировал и вставлял следующую команду, чтобы настроить ее:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

Меня беспокоит, что я не до конца понимаю синтаксис и почему нам нужен двойной <и круглые скобки. Может кто-нибудь объяснить это или указать мне правильную ссылку? </p>

Ответы [ 2 ]

13 голосов
/ 20 мая 2011

Первым является перенаправление ввода. Он передает содержимое файла в программу в качестве входных данных. Вторая конструкция - <() и это перенаправление процесса: она обрабатывает вывод процесса как файл. В этом случае вы запустите содержимое этого URL, как если бы это был скрипт bash - очень опасно! Если вы не полностью доверяете источнику, не делайте этого. Злоумышленник может использовать этот метод для запуска команд, которые могут поставить под угрозу вашу систему.

2 голосов
/ 20 мая 2011

Просто мои 2 цента.Структура Bashs <(), как сказал @Daenyth, «обрабатывает вывод процесса как файл».Эта структура может быть очень полезной.Просто подумайте о следующем:

 diff <(ls dir1) <(ls dir2)

При этом vimdiff будет показывать различия между содержимым dir1 и dir2 .Использование vimdiff вместо diff будет еще круче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...