मैं GNU मेक 3.81 को निर्देश देने की कोशिश कर रहा हूं कि अगर कोई कमांड विफल रहता है (तो मैं कमांड के साथ उपसर्ग करता -
हूं), लेकिन मैं अगले कमांड पर बाहर निकलने की स्थिति की जांच करना चाहता हूं और अधिक जानकारीपूर्ण संदेश प्रिंट करना चाहता हूं। हालांकि मेरा मेकफाइल नीचे विफल रहता है:
$ cat Makefile
all:
-/bin/false
([ $$? -eq 0 ] && echo "success!") || echo "failure!"
$
$ make
/bin/false
make: [all] Error 1 (ignored)
([ $? -eq 0 ] && echo "success!") || echo "failure!"
success!
क्यों गूंज से ऊपर Makefile "सफलता!" इसके बजाय "विफलता!" ?
अद्यतन करें:
निम्नलिखित स्वीकार किए गए उत्तर पर विस्तार और विस्तार किया गया है, नीचे लिखा गया है:
failure:
@-/bin/false && ([ $$? -eq 0 ] && echo "success!") || echo "failure!"
success:
@-/bin/true && ([ $$? -eq 0 ] && echo "success!") || echo "failure!"
.SHELLFLAGS = -ec
लिए इस्तेमाल किया जाना चाहिए। लेकिन इस मामले में आप -
उपसर्ग का उपयोग नहीं कर सकते हैं (रसीद की व्यक्तिगत कमांड के लिए) क्योंकि मेक लिखेगा कि त्रुटि को अनदेखा किया गया है लेकिन फिर भी सभी ब्लॉक को विफल कर देगा। तो, || :
कमांड को अनदेखा करने का एक उपाय है। लेकिन यह क्रॉस-प्लेटफ़ॉर्म नहीं है (विंडोज ने नहीं किया है || :
या नहीं || true
)
.ONESHELL:
निर्देश की जांच कर सकते हैं ।