Ruby escape ARGV аргумент или строка в качестве аргумента команды оболочки

Хорошо, это сводит меня с ума:

`ls #{"/media/music/Miles Davis"}`

терпит неудачу из-за пробела между «Майлзом» и «Дэвисом»

Скажем, я пишу сценарий ruby, и пользователь передает путь к файлу в качестве аргумента . Как мне избежать этого и передать команду оболочки. Да, да, я знаю, обстрелов следует избегать. Но это надуманный пример, он мне все еще нужен.

Я бы сделал system ("ls", ARGV [0]) , но он не возвращает вывод stdout ls в виде строки , что хорошо подходит для обратных кавычек.

Как избежать того, что вы вставляете в оболочку?

26
задан glenn jackman 3 August 2011 в 13:49
поделиться