2013-07-16 12 views

Odpowiedz

21

W Ruby, w przeciwieństwie do Perl, znak dolara wskazuje zmienną globalną, a nie zwykły regularny zmienny rozszerzyć na sznurku. W ciąg, trzeba użyć # {} konstruktu:

p `ruby -e "p #{script_dir}"` 

przykład:

irb(main):011:0> str = '\'howdy\'' 
=> "'howdy'" 
irb(main):012:0> `ruby -e "p #{str}"` 
=> "\"howdy\"\n" 
+0

Używam wersji 1.8.7 ruby ​​na maszynie fedora, powyższe stwierdzenie nie działa. Wydaje "" –

+0

czy upewniłeś się, że zmienna script_dir ma poprawną wartość? – Bogatyr

+0

Ponadto argument -e musi być w cudzysłowach, edytować. Trzeba też uważać na cytowanie, ponieważ argument p musi być w cudzysłowach, to literał: script_dir = '\' foo \ '' – Bogatyr

13

Ruby string interpolation współpracuje z operatorem grawis:

p `ruby -e p "#{script_dir}"` 
+0

+1 myślę, że to jest odpowiedź bardziej czytelny. – ngks

Powiązane problemy