Может ли кто-нибудь объяснить этот синтаксис?
Я использовал RVM некоторое время, и каждый раз, когда я просто копировал и вставлял следующую команду, чтобы настроить его:
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
Мне кажется, что я не полностью понимаю синтаксис, и почему нам нужны двойные < и круглые скобки. Может кто-нибудь объяснить это или указать мне на правильную ссылку?
Ответы
Ответ 1
Первый - это перенаправление ввода. Он подает содержимое файла в программу в качестве ввода. Вторая конструкция <()
и перенаправление процесса: она обрабатывает вывод процесса, например файла. В этом случае эффект заключается в том, что вы будете запускать содержимое этого URL-адреса, как если бы это было bash script - очень опасно! Если вы не доверяете источнику полностью, не делайте этого. Злоумышленник может использовать этот метод для запуска команд, которые могут поставить под угрозу вашу систему.
Ответ 2
Только мои 2 цента. Структура Bashs <()
, поскольку @Daenyth заявляет, что "обрабатывает вывод процесса как файла". Эта структура может быть очень полезна. Просто подумайте о следующем:
diff <(ls dir1) <(ls dir2)
Это будет использовать vimdiff, чтобы показать различия между содержимым dir1 и dir2. Использование vimdiff
вместо diff
будет еще более холодным.