मैं पहले से माफी मांगता हूं अगर यह एक डुप्लिकेट प्रश्न है। मैंने यहां पूछने से पहले खोज / जांच का प्रयास किया।
मैं इस तरह से वन-लाइनर्स लिखने में सहज हूं:
foocommand && foocommand2 && foocommand3
यह विचार कि मैं केवल बाद की आज्ञाओं को चलाना चाहता हूं यदि पिछले एक "सफल" था।
मैं कुछ लंबी स्क्रिप्ट लिख रहा हूं और यह एक-लाइनर संभव नहीं है क्योंकि यह कोड को हर किसी को भ्रमित करने का एक बड़ा ब्लॉक जैसा दिखता है।
मैं कमांड्स को स्पेस देना चाहता हूं और कमेंट्स लिखकर उन्हें स्क्रिप्ट में इनबेट करना चाहता हूं। मैं यह कैसे कर सकता हूं और अभी भी वहां && के बराबर है?
||और &&(करने के लिए विरोध के रूप में |या &) लघु सर्किटिंग कहा जाता है। बाद के ऑपरेटरों के साथ उपयोग किए जाने वाले व्यवहार को उत्सुक मूल्यांकन कहा जाता है।
a && b && cकेवल तभी चलेगा bजब aसफल होगा, इसलिए "यह केवल तभी चलता है cजब bसफल होता है" और "यह केवल तभी चलता है cयदि aऔर bदोनों सफल हों" समान कथन हैं: bजब तक aसफल नहीं हो सकते ।
a || b && cअधिक स्पष्ट है।
true || false && echo hiआउटपुट देगा hi। विनिर्देश पढ़ता है, ऑपरेटर "और&" और "||" समान पूर्वता होगी और इसका मूल्यांकन बाईं सहयोगीता के साथ किया जाएगा।
&&इसका मतलब यह नहीं है कि बाद की कमान चलेगी यदि पिछले एक सफल रहा था। इसका अर्थ है कि कमांड चलेगा यदि कमांड सूची में सभी पिछले कमांडों का सामूहिक परिणाम सफलता है। आप यह जान सकते हैं, लेकिन भविष्य के पाठक गलत समझ सकते हैं।