21

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

`ls -l | grep drw-`

但是,我正在编写一个脚本,它需要一些相当长的 shell 命令,为了便于阅读,我希望能够将它分成多行。我假设我不能像使用字符串一样只输入加号,但我很好奇是否有其他方式的命令连接技术可以将长命令字符串干净地分解为多行源代码。

4

4 回答 4

52

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

`ls -l \
 | grep drw-`
于 2012-04-03T18:05:19.210 回答
15

您可以使用插值:

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

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

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

根据您的需要,您还可以使用不同的方法来运行 shell 命令,例如system,但请注意它的行为与反引号并不完全相同。

于 2012-04-03T17:44:40.127 回答
13

使用%x

%x( ls -l |
    grep drw- )

其他:

%x(
  echo a
  echo b
  echo c
)
# => "a\nb\nc\n"
于 2014-07-29T19:35:28.833 回答
1

您也可以使用显式执行此操作\n

cmd_str = "ls -l\n" +
          "| grep drw-"

...然后将组合字符串放在反引号内。

`#{cmd_str}`
于 2014-02-13T19:06:18.503 回答