Backtick operatörünün içindeki bir değişkenin değerini nasıl değiştirebilirim?Backtick operatörünün içindeki değişken değerini değiştirme
script_dir = File.expand_path File.dirname(__FILE__)
p `ruby -e p "$script_dir"` # this does not work
Backtick operatörünün içindeki bir değişkenin değerini nasıl değiştirebilirim?Backtick operatörünün içindeki değişken değerini değiştirme
script_dir = File.expand_path File.dirname(__FILE__)
p `ruby -e p "$script_dir"` # this does not work
Ruby, Perl aksine dolar işareti global değişken değil, bir dizede genişletmek için düz düzenli değişken gösterir. Bunu daha okunabilir cevap olduğunu düşünüyorum
irb(main):011:0> str = '\'howdy\''
=> "'howdy'"
irb(main):012:0> `ruby -e "p #{str}"`
=> "\"howdy\"\n"
Yakut string interpolation işleci çalışır:
p `ruby -e p "#{script_dir}"`
+1:
p 'ruby -e "p #{script_dir}"'
Bir örnek: bir dize olarak, # {} yapısını kullanmak gerekir. – ngks
Fedora makinesinde ruby sürüm 1.8.7 kullanıyorum, yukarıdaki deyim çalışmaz. "" –
çıktılar, script_dir değişkeninizin uygun değere sahip olduğundan emin oldunuz mu? – Bogatyr
Ayrıca, -e argümanı tırnak içinde olmalı, düzenlenmiş olmalıdır. Aynı zamanda alıntılama konusunda da dikkatli olmalısınız, çünkü p 'nin argümanı tırnak içinde olması gerektiğine dair bir alıntıdır: script_dir =' \ 'foo \' – Bogatyr