मैं एक या दो सप्ताह के लिए heredocs
के साथ प्रयोग करना रहा है।
... अंश:: ...
शायद आप के बीच अंतर पर ध्यान यहाँ यूनिक्स स्टैक एक्सचेंज पर Is there a way to get actual (uninterpreted) shell arguments in a function or script? करने के लिए अपने जवाब से एक अंश है कि उनके उपयोग को वर्णन अपने मामले के लिए एक छोटे से मदद कर सकता है है दूसरे उदाहरण में दो heredocs। हेड्रोक ईओएफ फ़ंक्शन के भीतर टर्मिनेटर अनजान है, जबकि पढ़ने के लिए खिलाया गया एक एकल उद्धरण के साथ उद्धृत किया गया है। इस तरह शैल को हेडोकोक पर एक निर्विवाद टर्मिनेटर के साथ विस्तार करने का निर्देश दिया जाता है, लेकिन ऐसा करने के लिए नहीं जब उसके टर्मिनेटर उद्धृत किया जाता है। फ़ंक्शन में अनगिनत हेरेडोक का विस्तार करते समय यह तोड़ नहीं जाता है क्योंकि यह विस्तारित चर के मान को पहले ही उद्धृत स्ट्रिंग के रूप में सेट किया गया है और यह दो बार इसका विश्लेषण नहीं करता है।
शायद आप जो करना चाहते हैं वह आपके विंडोज पथ को एक कमांड के आउटपुट से दूसरे गतिशील इनपुट में पाइप करना शामिल है। एक हियरडॉक भीतर कमान प्रतिस्थापन से यह संभव है: तो बुनियादी तौर पर
% _stupid_mspath_fix() {
> sed -e '[email protected]\\@/@g' -e '[email protected]\(.\):\(.*\)@/drive/\1\[email protected]' <<_EOF_
>> ${1}
>> _EOF_
> }
% read -r _stupid_mspath_arg <<'_EOF_'
> c:\some\stupid\windows\place
> _EOF_
% _stupid_mspath_fix ${_stupid_mspath_arg}
/drive/c/some/stupid/windows/place
% read -r _second_stupid_mspath_arg <<_EOF_
> $(printf ${_stupid_mspath_arg})
> _EOF_
% _stupid_mspath_fix ${_second_stupid_mspath_arg}
/drive/c/some/stupid/windows/place
यदि आप कर सकते हैं मज़बूती से उत्पादन कुछ आवेदन से बैकस्लैश (मैं printf ऊपर इस्तेमाल किया), तो $ के भीतर उस आदेश चलाकर (...) और उस के भीतर संलग्न एक अज्ञात हेड्रोक एक अन्य एप्लिकेशन को पास कर देता है जो बैकस्लाश को इनपुट के रूप में विश्वसनीय रूप से स्वीकार कर सकता है (जैसे उपरोक्त पढ़ना और ऊपर) आपके बैकस्लेश के खोल के पार्सिंग को पूरी तरह से बाईपास कर देगा। एप्लिकेशन बैकस्लैश को संभाल सकता है या नहीं, क्योंकि इनपुट/आउटपुट कुछ ऐसा है जो आपको अपने लिए खोजना होगा।
-माइक
वैसे मुझे केवल उस आउटपुट की अंतिम पंक्ति की आवश्यकता है। अभी भी "| पूंछ -1" को कैसे शामिल किया जाए? –
'sed's/-/_/g '<< ईओएफ | पूंछ -1' –