"[[$ -! = * I *]] और& वापसी" का क्या अर्थ है?


22

मेरे पास यह रेखा है .bashrcऔर मैं जानना चाहता हूं कि इसका वास्तव में क्या मतलब है

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

जवाबों:


33
  • $- 'वर्तमान झंडे' का मतलब है।
  • echo $-"himBH" देता है। वे सभी चूक हैं।
  • इसलिए ... [[ $- != *i* ]] && returnवास्तव में यह एक टिप्पणी में ऊपर क्या कहता है: यह जांचता है कि क्या इंटरैक्टिव ध्वज सेट है। [[और]] इसे एक बूलियन बनाते हैं ताकि यह "सच" या "गलत" में समाप्त हो जाए। "असत्य और& प्रतिफल" इसे "सत्य और& प्रतिफल" पर ले जाता है, जिससे यह प्रतिफल निष्पादित करता है।

डिफ़ॉल्ट झंडे को और अधिक विस्तार से समझाया गया है:

h "हैश ऑल" के लिए है: यह bash को आपके PATH को क्वेरी करने के माध्यम से मिली कमांड के स्थानों को याद रखने के लिए कहता है।

मैं "इंटरैक्टिव" के लिए हूं: इनपुट दर्ज करना और आउटपुट प्राप्त करना।

मीटर "मॉनिटर" के लिए है: यह नौकरी नियंत्रण को सक्षम करता है

बी "ब्रेस विस्तार" के लिए है। यह आपको ब्रेस विस्तार का उपयोग करने की अनुमति देता है

एच "इतिहास विस्तार" के लिए है। यह वही है जो आपको एक विस्मयादिबोधक बिंदु के साथ इसकी संख्या पूर्ववर्ती करके अपने इतिहास से एक कमांड को फिर से चलाने में सक्षम बनाता है


वैसे। मेरे पास है ...

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

मूल रूप से वैसा ही होता है लेकिन मुझे लगता है पढ़ने के लिए आसान है।


6

मूल रूप से इसका मतलब है "यदि शेल फ्लैग में लोअरकेस i नहीं है, तो फ़ंक्शन / स्क्रिप्ट को यहां रोकें"।

[[ ]]

बश में एक सशर्त अभिव्यक्ति को दर्शाता है

$-

खोल झंडे का मतलब है। इसमें "i" होगा यदि शेल संवादात्मक है (यानी आप कमांड टाइप कर सकते हैं, जैसा कि विरोध किया गया है, यह एक स्क्रिप्ट निष्पादित कर रहा है)

!=

बस का अर्थ है "नहीं के बराबर"।

*i*

एक वाइल्डकार्ड पैटर्न है जो "i" युक्त किसी भी चीज़ से मेल खाता है

return

बिना किसी तर्क के बस मतलब है कि वर्तमान फ़ंक्शन या स्क्रिप्ट का निष्पादन रोकें।

&&

तार्किक और ऑपरेटर है। दाईं ओर अभिव्यक्ति, इस मामले में return, केवल मूल्यांकन किया जाएगा (निष्पादित) यदि बाईं ओर स्थित अभिव्यक्ति सत्य है । कई प्रोग्रामिंग भाषाओं में, इसके a && bलिए एक आशुलिपि है if a then b- इसे "शॉर्ट-सर्किट मूल्यांकन" कहा जाता है और जब आप इसे चुनते हैं तो यह प्रोग्रामिंग शिक्षकों को पागल कर देता है: डी।


2

मुझे लगता है कि यह ऐसा कहेगा: यदि बैश एक इंटरैक्टिव शेल में खुला नहीं है, तो कुछ भी न करें।

मुझे पूरे समारोह का पता नहीं है, लेकिन संभवतः टीटीवाई में खुले में बैश होने की स्थिति में उस पंक्ति के नीचे कमांड और झंडे हैं।


धन्यवाद :) लेकिन मैं यह जानने के लिए उत्सुक हूं कि वास्तव में क्या है $-और *i*यह कैसे पता चलता है कि इसका इंटरएक्टिव मोड है या नहीं
सेवेरस टक्स

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.