什么是`<<(()`语法?

Ale*_* Le 13 bash shell

我一直在使用RVM,每次我只是复制并粘贴以下命令来设置它:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
Run Code Online (Sandbox Code Playgroud)

这让我觉得我不完全理解语法,以及为什么我们需要double <和括号.有人可以解释这个或指向我正确的参考?

Dae*_*yth 13

第一个是输入重定向.它将文件的内容作为输入提供给程序.第二个构造是<()它的进程重定向:它将进程的输出视为文件.在这种情况下,效果是您将运行该URL的内容,就好像它是一个bash脚本 - 非常危险!如果您不相信完全来源,请不要这样做.攻击者可以使用此方法让您运行会危及系统的命令.

  • 好的回复,特别是在注意到安全问题时. (2认同)