2013-07-16 9 views
16

के अंदर चर के मान को कम करना मैं बैकटिक ऑपरेटर के अंदर एक चर के मूल्य को कैसे प्रतिस्थापित कर सकता हूं?बैकटिक ऑपरेटर

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

उत्तर

21

रूबी में, पर्ल के विपरीत, डॉलर चिह्न एक वैश्विक चर, नहीं एक स्ट्रिंग में विस्तार करने के लिए एक सादे नियमित चर इंगित करता है।

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

एक उदाहरण::

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

मैं फेडोरा मशीन पर रूबी संस्करण 1.8.7 का उपयोग कर रहा हूं, उपर्युक्त कथन काम नहीं करता है। यह –

+0

आउटपुट करता है क्या आपने सुनिश्चित किया है कि आपकी script_dir चर का उचित मूल्य है? – Bogatyr

+0

इसके अलावा, तर्क - उद्धरण में होना चाहिए, संपादित किया जाना चाहिए। आपको उद्धरण के बारे में भी सावधान रहना होगा, क्योंकि पी को तर्क उद्धरण में होना चाहिए क्योंकि यह एक स्ट्रिंग अक्षर है: script_dir = '\' foo \ '' – Bogatyr

13

रूबी string interpolation बैकटिक ऑपरेटर के साथ काम करता है:

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

+1 मुझे लगता है कि यह अधिक पठनीय जवाब है एक स्ट्रिंग में, आप # {} निर्माण प्रयोग करना होगा। – ngks

संबंधित मुद्दे