2016-12-16 2 views
5

मुझे यह कुछ कोड मिला जो मैं काम कर रहा था। यह डिस्क से एक keyfile पढ़ने के लिए एक आवश्यकता के आसपास काम करने के लिए डिजाइन किया गया था। उत्पादन में कीफाइल की सामग्री पर्यावरण चर में थी।फ़ाइल.read ("| echo mystring") कैसे काम करता है?

पुराने कोड:

key = File.read('path/to/key.pem') 

नए कोड:

key = File.read('| echo $KEY_VARIABLE') 

कैसे काम करता है?

+3

यह है .... env var पढ़ने के लिए एक अजीब तरीका है। 'ENV ['KEY_VARIABLE'] होना चाहिए। –

+1

@ वर्गियो लाइब्रेरी जो var प्राप्त करता है केवल पैरामीटर को पैरामीटर – djb

+1

FWIW के रूप में समर्थन करता है, यह सभी आदेशों के साथ काम करता है: 'File.read (' | uptime ') '। मुझे लगता है कि यह एक सुविधा 'आईओ' प्रदान करता है, लेकिन मैंने इसे कभी नहीं देखा है और यह दिलचस्प लग रहा है। डरावना। लेकिन दिलचस्प है। – berkes

उत्तर

9

IO docs से:

एक स्ट्रिंग के साथ शुरू "|" एक उपप्रक्रिया इंगित करता है। "|" के बाद स्ट्रिंग का शेष एक प्रक्रिया के रूप में लागू किया जाता है जिसमें उचित इनपुट/आउटपुट चैनल शामिल होते हैं।

"कनेक्टेड" बिट का मतलब है कि प्रक्रिया का आउटपुट read के लिए इनपुट बन जाएगा। तो इस उदाहरण में पर्यावरण चर के echo से परिणाम पढ़ा जा सकता है।

+2

टीआईएल। यदि आप पहले से ही अपने मणि, एप्लिकेशन या टूल में उपयोगकर्ता द्वारा जेनरेट किए गए फ़ाइल नामों के इनपुट को श्वेतसूची में नहीं डाल रहे थे, तो ऐसा करने का यही क्षण है। '/ रिपोर्ट/1337 फ़ाइल नाम =% 7C% 20rm% 20-आरएफ% 20% 2F% 20 - नहीं-की रक्षा-root' – berkes

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