Jak mogę podstawić wartość zmiennej wewnątrz operatora backtick?Podstawianie wartości zmiennej wewnątrz operatora odwzorowania
script_dir = File.expand_path File.dirname(__FILE__)
p `ruby -e p "$script_dir"` # this does not work
Jak mogę podstawić wartość zmiennej wewnątrz operatora backtick?Podstawianie wartości zmiennej wewnątrz operatora odwzorowania
script_dir = File.expand_path File.dirname(__FILE__)
p `ruby -e p "$script_dir"` # this does not work
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"
Ruby string interpolation współpracuje z operatorem grawis:
p `ruby -e p "#{script_dir}"`
+1 myślę, że to jest odpowiedź bardziej czytelny. – ngks
Używam wersji 1.8.7 ruby na maszynie fedora, powyższe stwierdzenie nie działa. Wydaje "" –
czy upewniłeś się, że zmienna script_dir ma poprawną wartość? – Bogatyr
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