Ruby Backticks - 将命令分成多行?

时间:2012-04-03 17:41:27

标签: ruby shell backticks

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

`ls -l | grep drw-`

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

4 个答案:

答案 0 :(得分:45)

您可以使用\转义回车:

`ls -l \
 | grep drw-`

答案 1 :(得分:11)

您可以使用插值:

`#{"ls -l" +
   "| grep drw-"}`

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

cmd = "ls -l" +
      "| grep drw-"
`#{cmd}`

根据您的需要,您也可以使用different method of running the shell command,例如system,但请注意其行为与反引号不完全相同。

答案 2 :(得分:9)

使用%x

%x( ls -l |
    grep drw- )

另:

%x(
  echo a
  echo b
  echo c
)
# => "a\nb\nc\n"

答案 3 :(得分:1)

您也可以使用明确\n

执行此操作
cmd_str = "ls -l\n" +
          "| grep drw-"

...然后将组合后的字符串放入反引号中。

`#{cmd_str}`