Ruby Backticks - разбить команду на несколько строк? - PullRequest
14 голосов
/ 03 апреля 2012

В Ruby я знаю, что могу выполнить команду оболочки с обратными галочками, например:

`ls -l | grep drw-`

Тем не менее, я работаю над сценарием, который вызывает несколько довольно длинных команд оболочки, и для удобства чтения я бы хотел разбить его на несколько строк. Я предполагаю, что не могу просто добавить знак плюса, как в случае со строками, но мне любопытно, есть ли метод конкатенации команд другого способа для чистого разбиения длинной командной строки на несколько строк исходного кода.

Ответы [ 4 ]

45 голосов
/ 03 апреля 2012

Вы можете избежать возврата каретки с помощью \:

`ls -l \
 | grep drw-`
12 голосов
/ 03 апреля 2012

Вы можете использовать интерполяцию:

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

или поместите команду в переменную и интерполируйте переменную:

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

В зависимости от ваших потребностей, вы также можете использовать другой метод запуска команды оболочки , такой как system, но обратите внимание, что его поведение не совсем так же, как галочки.

9 голосов
/ 29 июля 2014

Использование %x:

%x( ls -l |
    grep drw- )

Другой:

%x(
  echo a
  echo b
  echo c
)
# => "a\nb\nc\n"
1 голос
/ 13 февраля 2014

Вы также можете сделать это с явным \n:

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

... и затем поместить объединенную строку в обратные черты.

`#{cmd_str}`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...