2013-08-07 8 views
7
फॉर्मेट करें करने के लिए

आदेश पंक्ति तर्क के लिए एक विशिष्ट स्वरूप है:कैसे कमांड लाइन तर्क कुंजी मान युग्म

myApp --myArg=myValue 

क्या होगा यदि मैं कमांड लाइन के माध्यम से कुंजी मान जोड़ों का एक समूह में पारित करने के लिए करना चाहते हैं? कुछ की तरह:

myApp --myList={arg1=val1;arg2=val2;arg3=val3...} 

there seems to be no standard for this sort of thing के बाद से, किसी को भी अच्छी तरह से इस्तेमाल किया उपयोगिताओं कमांड लाइन तर्क इनपुट इस तरह की है कि से उदाहरण प्रदान कर सकते हैं? मैंने कुछ मैन पेजों के चारों ओर पोक किया लेकिन मुझे कोई नहीं मिला।

संपादित करें: मैं सोच रहा हूं कि इनपुट को कैसे स्वरूपित किया जाना चाहिए और सहायता टेक्स्ट कैसा दिख सकता है।

उत्तर

5

मुझे लगता है कि यह काफी हद तक निर्भर करता है कि आप अपने कार्यक्रम में तर्कों का विश्लेषण कैसे करते हैं।

यहां कुछ उदाहरण दिए गए हैं कि कार्यक्रम एकाधिक कुंजी-मूल्य जोड़ी मान स्वीकार करते हैं।

आदमी php:

--define foo[=bar] 
    -d foo[=bar] Define INI entry foo with value bar 

आदमी Git:

-c <name>=<value> 
     Pass a configuration parameter to the command. The value given will 
     override values from configuration files. The <name> is expected in 
     the same format as listed by git config (subkeys separated by 
     dots). 

दोनों के लिए, एक कई -d या -c तर्क प्रोग्राम जो आप कुंजी की एक सूची की आपूर्ति करने की क्षमता देता है करने के लिए पारित कर सकते हैं कार्यक्रमों के लिए मूल्य जोड़े।

IMO, यह जब तक यह काम करता है और है अच्छी तरह से प्रलेखित अपने कार्यक्रम के लिए कुंजी-मान जोड़ों की सूची को स्वीकार करने की अपनी शैली होने की एक बड़ी समस्या नहीं है। :)

पीएस .: मुझे लगता है कि यह सवाल अधिक उचित होगा 0,पर एसओ के बजाय। here और here देखें।

2

एप्लिकेशन इतने सारे तर्कों की जरूरत है, मैं बजाय उन्हें कमांड लाइन में पास करने का एक कॉन्फ़िग फ़ाइल का प्रयोग करेंगे:

myApp --config=file.cnf

यह दृष्टिकोण निम्न लाभ हैं:

  • लचीलापन - आपके पास अलग-अलग आमंत्रणों के लिए तैयार कॉन्फ़िगर का एक गुच्छा हो सकता है, और केवल उनका उपयोग करें,
  • उद्धरण के साथ कोई समस्या नहीं - कमांड लाइन तर्कों में रिक्त स्थान होने पर यह हमेशा दर्दनाक होता है, डबल क्वा otes, <,>, या अन्य विशेष वर्ण,
  • सादगी - आप कॉन्फ़िगरेशन फ़ाइल प्रारूप को नियंत्रित करते हैं, उदाहरण के लिए यह आईएनआई, जेएसओएन, एक्सएमएल इत्यादि हो सकता है। इसे बनाना आसान है और पार्सिंग कमांड लाइन के रूप में पार्स करना आसान है - - यदि आसान नहीं है,
  • सुरक्षा - यदि कोई तर्क संवेदनशील हो सकता है, तो यह कमांड लाइन तर्क प्रदर्शित करने वाले टूल से दिखाई नहीं देता है।
संबंधित मुद्दे