можно ли объединить аргументы в командной строке с помощью обратных кавычек?
-
09-06-2019 - |
Вопрос
Я хотел бы выполнить команду операционной системы из моего ruby-скрипта, но я хочу добавить аргумент из ruby-переменной.
Я знаю, что это возможно с помощью ключевого слова система вот так :
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
но возможно ли это с помощью "обратных кавычек или синтаксиса обратных ссылок"?(Я имею в виду использование этого синтаксиса : ls
)
Решение
Нет, это просто объединит выходные данные из ls
и содержание directory
.
Но ты можешь это сделать:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
Другие советы
`ls #{directory}`
это не очень безопасно, потому что вы столкнетесь с проблемами с именами путей, в которых есть пробелы.
Безопаснее делать что-то подобное:
directory = '/home/paulgreg/'
args = []
args << "/bin/ls"
args << directory
system(*args)
Ник прав, но нет необходимости собирать аргументы по кусочкам:
directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
Не связан с StackOverflow