2012-04-01 7 views
61

मैंने एक असाइनमेंट के लिए एक प्रोग्राम लिखा है जिसे अपने आउटपुट को स्टडआउट पर प्रिंट करना है। असाइनमेंट स्पेक को मेकफ़ाइल के निर्माण की आवश्यकता होती है, जिसे make run > outputFile के रूप में आमंत्रित किया जाना चाहिए और प्रोग्राम को आउटपुट लिखना चाहिए, जिसमें एक SHA1 फिंगरप्रिंट स्पेक में दिए गए किसी के समान है।मेकफ़ाइल में कमांड आमंत्रण की गूंज को दबाएं?

... 
run: 
    java myprogram 

भी आदेश जो आउटपुट फ़ाइल करने के लिए अपने कार्यक्रम (जैसे जावा MyProgram) चलाता है, तो यह है कि अपनी फ़ाइल गलत होने की अंगुली की छाप के कारण इस अतिरिक्त लाइन शामिल प्रिंट:

मेरे समस्या यह है कि मेरी makefile है ।

कमांड लाइन पर प्रतिध्वनि आदेश कमांड के बिना कमांड निष्पादित करने का कोई तरीका है?

उत्तर

110

आदेश की शुरुआत में @ जोड़ें ताकि gmake को निष्पादित किए गए आदेश को मुद्रित न किया जा सके। इस तरह:

run: 
    @java myprogram 

जैसा ओली ने सुझाव दिया था, यह बैश के मेक और नहीं की एक विशेषता है।

दूसरी ओर, बैश कभी भी आदेशों को निष्पादित नहीं करेगा जबतक कि आप इसे स्पष्ट रूप से करने के लिए नहीं कहें (यानी -x विकल्प के साथ)।

+3

+1। लेकिन ओपी के भ्रम को दूर करने के लिए, शायद यह स्पष्ट करने लायक है कि यह मेक की एक विशेषता है, बैश के नहीं। –

+0

@ ओली चेहरल्सवर्थ: समझ में आता है, जो जोड़ा गया। धन्यवाद। –

+0

क्या सभी echos को अक्षम करने का कोई तरीका है? या इसे एक सेक्शन के लिए बंद कर दिया, और बाद में वापस? – Benubird

0

एक @ से कमांड के पहले के प्रभाव को लाइन पर पिछली बैकस्लैश का उपयोग करके कमांड को बढ़ाकर "सेक्शन" तक बढ़ाया जा सकता है। यदि एक फोनी कमांड आउटपुट को दबाने के लिए वांछित है, तो @printf "" \

+1

क्या आप हमें कोड के साथ एक उदाहरण दे सकते हैं? – Dennis

25

यहां तक ​​कि सरल: मेक-एस (मूक मोड)!

+0

उपरोक्त: यह वास्तव में यहां स्वीकार्य उत्तर होना चाहिए। '@ 'आदेशों के साथ अपने मेकफ़ाइल को छिड़कना डीबग करना और बहुत सारे अव्यवस्था को जोड़ना मुश्किल है। – tripleee

+4

मैं मानता हूं कि यह जाने का तरीका है - लेकिन मूल समस्या के विवरण में ध्यान दें, मैं एक आविष्कार नहीं करूँगा - मेरा प्रशिक्षक होगा। इस प्रकार, मेरे पास होगा पास किए गए झंडे पर कोई नियंत्रण नहीं है। मुझे मेकफ़ाइल के भीतर से आउटपुट को नियंत्रित करने की आवश्यकता है। असली दुनिया में सबसे व्यावहारिक समाधान के लिए उपरोक्त। – noobler

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