2013-07-16 28 views

回答

21

在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" 
+0

我在Fedora機器上使用ruby 1.8.7版本,上面的語句不起作用。它輸出「」 –

+0

你確定你的script_dir變量具有適當的值嗎? – Bogatyr

+0

另外,-e的參數必須在引號中,進行編輯。你還必須小心引用,因爲p的參數必須在引號中,它是一個字符串文字:script_dir ='\'foo \'' – Bogatyr

13

紅寶石string interpolation工作與反引號操作符:

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

+1我覺得這是更可讀的答案。 – ngks