Ruby Backticks - 将命令分成多行?

asf*_*ows 15 ruby shell backticks

在Ruby中,我知道我可以用反引号执行shell命令,如下所示:

`ls -l | grep drw-`
Run Code Online (Sandbox Code Playgroud)

但是,我正在编写一个脚本,它需要一些相当长的shell命令,为了便于阅读,我希望能够将它分解为多行.我假设我不能像Strings一样加入加号,但我很好奇是否有一种命令级联技术可以将一个长命令字符串干净地分解为多行源代码.

Mar*_*mas 47

您可以使用以下命令来转义回车\:

`ls -l \
 | grep drw-`
Run Code Online (Sandbox Code Playgroud)

  • 作品!这是最正确的答案. (7认同)
  • 这就是我正在寻找的。 (2认同)

And*_*all 13

你可以使用插值:

`#{"ls -l" +
   "| grep drw-"}`
Run Code Online (Sandbox Code Playgroud)

或者将命令放入变量并插入变量:

cmd = "ls -l" +
      "| grep drw-"
`#{cmd}`
Run Code Online (Sandbox Code Playgroud)

根据您的需要,您也可以使用另一种运行shell命令的方法,例如system,但请注意其行为与反引号不完全相同.


kon*_*box 9

用途%x:

%x( ls -l |
    grep drw- )
Run Code Online (Sandbox Code Playgroud)

另一个:

%x(
  echo a
  echo b
  echo c
)
# => "a\nb\nc\n"
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在第一行的末尾(而不是第二行的开头)使用管道(`|`)是至关重要的. (2认同)