代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

它的意思是“bash<<(curl http://rvm.io/releases/rvm-install-head)”[关闭]

  •  7
  • nonopolarity  · 技术社区  · 14 年前

    RVM主页

    http://rvm.io/

    bash < <( curl http://rvm.io/releases/rvm-install-head )
    

    这是什么语法? command <( another_command)

    原来的台词不能是吗? curl http://rvm.io/releases/rvm-install-head | bash

    2 回复  |  直到 11 年前
        1
  •  14
  •   mpapis    11 年前

    <(command) 使用命令的输出创建命名管道(或使用现有的) /dev/fd ,并将该管道的文件名替换到命令中。 < 然后重定向给定文件中的标准输入。

    是的,在这种情况下,这相当于

    curl http://rvm.io/releases/rvm-install-head | bash
    

    < <() 对于使用管道的版本,管道为接收输入的命令创建子shell(在本例中, bash ),而 <<() 为生成输出的命令创建子shell。如果使用管道,则子shell中的命令无法修改shell环境中的变量,这有时是需要的(如果希望将某些内容管道化到 while read ... 猛击 ;这里不需要从父shell运行任何内容。

        2
  •  4
  •   Benoit    14 年前

    part 23 of the advanced bash scripting guide .

    简而言之 <( x ) >( y )

    • 将它们放在命令行中需要文件名的地方

    • 所附命令将

      • <(x) ),或
      • >(y) )

      一个临时文件(或一个命名管道,bash将对其进行管理),其名称将被赋予外部命令。