21

Rubyでは、次のようなバッククォートを使用してシェルコマンドを実行できることを知っています。

`ls -l | grep drw-`

ただし、私はいくつかのかなり長いシェルコマンドを必要とするスクリプトに取り組んでおり、読みやすくするために、複数の行に分割できるようにしたいと考えています。文字列のようにプラス記号を挿入することはできないと思いますが、長いコマンド文字列を複数行のソースコードにきれいに分割する他の方法のコマンド連結手法があるかどうか知りたいです。

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}`

必要に応じて、などのシェルコマンドを実行する別の方法を使用することもできますが、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 に答える