Можно ли объединить аргументы в командной строке с помощью обратных кавычек? - PullRequest
1 голос
/ 03 сентября 2008

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

Я знаю, что это возможно при использовании ключевого слова system , например:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory

но возможно ли это с помощью "синтаксиса обратных кавычек или обратных кавычек"? (Я имею в виду, используя этот синтаксис: ls)

Ответы [ 3 ]

6 голосов
/ 03 сентября 2008
`ls #{directory}` 

не очень безопасно, потому что вы столкнетесь с проблемами с именами путей, в которых есть пробелы.

Безопаснее сделать что-то вроде этого:

directory = '/home/paulgreg/'

args = []
args << "/bin/ls"
args << directory

system(*args)
6 голосов
/ 03 сентября 2008

Нет, это просто объединит выходные данные из ls и содержимое directory.

Но вы можете сделать это:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
1 голос
/ 16 сентября 2008

Ник прав, но нет необходимости собирать аргументы по кусочкам:

directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...