एक जीएनयू मेकफ़ाइल में, मैं आउटपुट वैरिएबल को एक मान में सेट करना चाहता हूं (चलिए एक "सत्य") इनपुट करते हैं परिवर्तनीय दो मानों में से एक के बराबर है और जब यह नहीं है तो एक अन्य मान ("झूठा") है।यह जांचने के लिए कि क्या एक चर दो मानों में से एक के बराबर है यदि///और
धन्यवाद this SO answer को मैं and
और or
कार्यों के बारे में सीखा है और जल्द ही उस के बाद मैं if
समारोह मिल गया है। ये कार्य मेरे संस्करण के संस्करण में उपलब्ध प्रतीत होते हैं, इसलिए मैं उनका उपयोग करना चाहता हूं। ,
TEST_INPUT = `hostname`
TEST_OUTPUT = $(if $(or $(eq $(TEST_INPUT),hal9000),
$(eq $(TEST_INPUT),pipboy)),true,false)
दुर्भाग्य से मैं नहीं कर सकता क्योंकि मैं उम्मीद eq
समारोह के किसी भी स्पष्ट रूप नहीं पा सके: मैं ऐसा ही कुछ लिखने के लिए करना चाहते हैं। मैं प्राप्त करने के लिए मैं क्या filter
फ़ंक्शन का उपयोग करना चाहते हैं कर रहा हूँ:
TRUE_HOSTS = hal9000 pipboy
TEST_OUTPUT = $(if $(filter $(TEST_INPUT),$(TRUE_HOSTS)),true,false)
या subst
समारोह:
TEST_OUTPUT = $(if $(and $(subst hal9000,,$(TEST_INPUT)),
$(subst pipboy,,$(TEST_INPUT))),
false,true)
लेकिन मेरे लिए यह एक अच्छा लग रही है और न ही पठनीय कोड नहीं है। क्या पहले उदाहरण के करीब समाधान हैं (कोई मौजूदा eq
फ़ंक्शन का उपयोग नहीं कर रहा है)? शायद मुझे if
, and
और or
फ़ंक्शंस का उद्देश्य नहीं मिला है?
मेरी भावना की पुष्टि करने के लिए धन्यवाद कि तुलनात्मक कार्य प्रदान नहीं किए जाते हैं। आपका 'eq' फ़ंक्शन भी बहुत स्मार्ट और मेरे समाधानों से अधिक पठनीय है (मैं लापरवाही से इसका उपयोग करूंगा)। धन्यवाद :) –