Ok to doprowadza mnie do szału shell:Ruby uciec argumentu argv lub ciąg znaków jako argument polecenia
`ls #{"/media/music/Miles Davis"}`
nie z powodu przestrzeni pomiędzy "Miles" i "Davis"
Say piszę rubin skrypt i użytkownik przekazuje ścieżkę pliku jako argument. W jaki sposób mogę go uniknąć i przekazać do polecenia powłoki. Tak, tak, wiem, należy unikać wystrzałów. Ale jest to wymyślny przykład, nadal tego potrzebuję.
Zrobiłbym system("ls", ARGV[0])
, ale nie zwraca wyjściowego wyjścia ls jako napis, co jest tym, co robią dobrze.
W jaki sposób można uciec, niezależnie od tego, co wstawia się do wyjścia?
Doskonała! Dziękuję Ci! Nie wiedziałem o tym module. – ulver
Możesz także użyć skrótu 'String # shellescape', tak: ' ls # {"/ media/music/Miles Davis" .shellescape} ' – cgenco