Ruby Backticks - разбить команду на несколько строк?
В Ruby я знаю, что могу выполнить команду оболочки с обратными галочками, например:
`ls -l | grep drw-`
Тем не менее, я работаю над сценарием, который вызывает несколько довольно длинных команд оболочки, и для удобства чтения я бы хотел разбить его на несколько строк. Я предполагаю, что не могу просто добавить знак плюса, как в случае со строками, но мне любопытно, есть ли метод конкатенации команд другого способа для чистого разбиения длинной командной строки на несколько строк исходного кода.
4 ответа
Вы можете использовать интерполяцию:
`#{"ls -l" +
"| grep drw-"}`
или поместите команду в переменную и интерполируйте переменную:
cmd = "ls -l" +
"| grep drw-"
`#{cmd}`
В зависимости от ваших потребностей вы также можете использовать другой метод запуска команды оболочки, например: system
, но обратите внимание, что его поведение не совсем то же самое, что и обратная связь.
Вы можете избежать возврата каретки с \
:
`ls -l \
| grep drw-`
Использование %x
:
%x( ls -l |
grep drw- )
Другая:
%x(
echo a
echo b
echo c
)
# => "a\nb\nc\n"
Вы также можете сделать это с явным \n
:
cmd_str = "ls -l\n" +
"| grep drw-"
... и затем поместите объединенную строку в кавычки.
`#{cmd_str}`