2013-02-12 52 views
9

मैं एक निष्पादन योग्य है कि जैसे कि निम्न एक तरह से प्रयोग किया जाता है है:एक निष्पादन के लिए इनपुट के रूप में एक फ़ाइल के स्थान पर एक बैश चर का उपयोग कर

executable -v -i inputFile.txt -o outputFile.eps 

आदेश और अधिक कुशल होने के लिए, मैं का उपयोग करना चाहते इनपुट फ़ाइल के स्थान पर एक बैश चर। तो, मैं निम्नलिखित की तरह कुछ करना चाहता हूं:

executable -v -i ["${inputData}"] -o outputFile.eps 

यहां, वर्ग ब्रैकेट कुछ चालाक कोड का प्रतिनिधित्व करते हैं।

क्या आप कुछ चाल के बारे में जानते हैं जो मुझे इस तरह से वर्णित निष्पादन योग्य में पाइप जानकारी की अनुमति देगी?

आपकी सहायता

+0

यह थोड़ा अस्पष्ट है कि आप क्या करना चाहते हैं। जैसे, इनपुटडेटा का मूल्य क्या है? – hyde

+1

"$ {inputData}" सरल है, ASCII डेटा जिसे मैं वास्तव में फ़ाइल का उपयोग किए बिना फ़ाइल के रूप में 'पैकेज' करना चाहता हूं (जिसे गैर अस्थिर स्मृति में संग्रहीत करने की आवश्यकता हो सकती है)। उपयोगकर्ता मिक्यरा प्रक्रिया प्रतिस्थापन से जुड़े एक दृष्टिकोण का सुझाव देता है जो मुझे लगता है कि मुझे बिल्कुल चाहिए। आपकी सहायता के लिए धन्यवाद. – d3pd

+0

आह, अब मुझे मिल गया ... अच्छा, मुझे इसके बारे में पता नहीं था। जाहिर है यह एक * बैश * सुविधा है, जो सादा * sh * या * डैश * द्वारा समर्थित नहीं है, इसलिए स्क्रिप्ट में इसका उपयोग करते समय '#!/Bin/bash' का उपयोग करना बेहतर याद रखें। + 1 + 1 – hyde

उत्तर

19

के लिए बहुत-बहुत धन्यवाद आप बैश आप के लिए आदेशों उत्पादन के साथ एक फीफो बना सके निर्माण

<(command) 

उपयोग कर सकते हैं। तो बस कोशिश:

-i <(echo "$inputData") 
+1

यह प्रक्रिया प्रतिस्थापन बिल्कुल वही है जो मुझे चाहिए। आपके सहयोग के लिये बहुत धन्यवाद! – d3pd

+0

मुझे कुछ कमांड का सामना करना पड़ा जिसे इनपुट फ़ाइल की तलाश करने की आवश्यकता है, जहां फीफो पाइप काम नहीं करता है। Zsh में एक =() एक temp फ़ाइल के रूप में लागू किया गया है, जो अच्छी तरह से काम करता है। – misssprite

+1

https://www.gnu.org/software/bash/manual/bash.html#Process- इस अनुभाग को पढ़ने के लिए सबस्टिट्यूशन –

0

यह मानते हुए कि अपने निष्पादन योग्य फ़ाइल नाम कार्यकारी है और परिभाषित चर नाम एक्स है और आप निष्पादन करने के लिए इनपुट के रूप में एक्स का मान पास करना चाहते हैं। तब ऐसा करते हैं:

$ echo $x > stdin && ./exec < stdin 

इस काम

-1
executable -v -i <<<"${inputData}" -o outputFile.eps 

करेंगे बैश में चाल करेंगे।

+1

यहां स्ट्रिंग '<<<' स्ट्रिंग को कमांड के मानक इनपुट में निर्देशित करता है। यह कमांड लाइन पर कुछ भी नहीं डालता है, और इसे पढ़ने के लिए फ़ाइल की तरह दिखता नहीं है। – ilkkachu

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

  • कोई संबंधित समस्या नहीं^_^