क्या कोई जानता है कि नुस्खा पर यहां दस्तावेज़-दस्तावेज़ पुनर्निर्देशन का उपयोग कैसे करें?मेकफ़ाइल रेसिपीर यहां एक दस्तावेज़-दस्तावेज़ पुनर्निर्देशन
test:
sh <<EOF
echo I Need This
echo To Work
ls
EOF
मैं किसी भी समाधान हमेशा की तरह बैकस्लैश विधि (जो मूल रूप से एक पंक्ति में एक आदेश के साथ समाप्त होता है) की कोशिश कर रहा नहीं मिल रहा।
दलील:
मैं बहु लाइन व्यंजनों है कि मैं एक और आदेश के माध्यम से प्रॉक्सी करना चाहते हैं (उदाहरण के लिए, श, डोकर) का एक सेट है।
onelinerecipe := echo l1
define twolinerecipe :=
echo l1
echo l2
endef
define threelinerecipe :=
echo l1
echo l2
echo l3
endef
# sh as proxy command and proof of concept
proxy := sh
test1:
$(proxy) <<EOF
$(onelinerecipe)
EOF
test2:
$(proxy) <<EOF
$(twolinerecipe)
EOF
test3:
$(proxy) <<EOF
$(threelinerecipe)
EOF
समाधान मैं बचाना पसंद करूंगा: मल्टीलाइन मैक्रोज़ को एकल लाइनों में परिवर्तित करें।
define threelinerecipe :=
echo l1;
echo l2;
echo l3
endef
test3:
$(proxy) <<< "$(strip $(threelinerecipe))"
यह काम करता है (मैं मेकअप के खोल के रूप में gmake 4.0 और पार्टी का उपयोग करें) लेकिन यह मेरी व्यंजनों को बदलने की आवश्यकता है और मैं एक बहुत कुछ है। पट्टी मैक्रो से नई लाइनों को हटा देती है, तो सब कुछ एक ही पंक्ति में लिखा जाता है।
मेरे अंतिम लक्ष्य है: proxy := docker run ...
sh -c '' अपने आदेश यहां कैसे रखें 'के बारे में कैसे? – fanton
[मेकफ़ाइल में हेरेडोक का संभावित डुप्लिकेट?] (Http://stackoverflow.com/questions/5873025/heredoc-in-a-makefile) – e0k
@ e0k मैंने संदर्भ जोड़ा –