25

如何替换反引号运算符中的变量值?

script_dir = File.expand_path File.dirname(__FILE__)
p `ruby -e p "$script_dir"` # this does not work
4

2 回答 2

30

在 Ruby 中,与 Perl 不同,美元符号表示全局变量,而不是在字符串中展开的普通常规变量。在字符串中,您需要使用 #{} 构造:

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

一个例子:

irb(main):011:0> str = '\'howdy\''
=> "'howdy'"
irb(main):012:0> `ruby -e "p #{str}"`
=> "\"howdy\"\n"
于 2013-07-16T12:44:29.780 回答
20

Ruby字符串插值适用于反引号运算符:

p `ruby -e p "#{script_dir}"`
于 2013-07-16T12:44:07.480 回答