можно ли объединить аргументы в командной строке с помощью обратных кавычек?

StackOverflow https://stackoverflow.com/questions/41630

Вопрос

Я хотел бы выполнить команду операционной системы из моего 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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top