"कमांड और कमांड" और "कमांड" के बीच क्या अंतर है; आदेश "


49

मैं उबंटू "कमांड एंड कमांड" और "कमांड; कमांड",
जैसे इन दो उपयोगों को देखता हूंapt-get update && apt-get upgrade

अगर मैं उपयोग apt-get update; apt-get upgradeकरूं तो क्या होगा ?
मैं इस विशिष्ट उपयोग के लिए नहीं कह रहा हूं, लेकिन सामान्य तौर पर इन दो उपयोगों के बीच अंतर क्या है?


2
विन कमांड-लाइन और बैच में एक ही विशेषता है & (simple sequencing), && (conditional AND) and || (conditional OR):।
करण

5
इन्हें भी देखें: बैश संदर्भ मैनुअल - आदेशों की सूची । सामान्य तौर पर, कुछ भी नहीं है जो आप दस्तावेज़ में नहीं ढूंढ सकते हैं; यदि आप विशिष्ट सिंटैक्स तत्वों के बारे में कोई प्रश्न पूछना चाहते हैं तो यह वास्तव में देखने लायक है।
slhck

1
@ केरन और पूर्णता के लिए, बैश (लिनक्स / उबंटू) ||भी है।
इज़्काटा

जवाबों:


88

&&एक तार्किक ऑपरेटर है। ;सरल अनुक्रमण है।

में cmd1 && cmd2, CMD2 केवल एक सफल वापसी कोड के साथ करता है, तो cmd1 रास्ते चलाया जाएगा।

जबकि cmd1; cmd2, cmd2, cmd1 की निकास स्थिति की परवाह किए बिना चलेगा (यह मानते हुए कि आपने अपनी स्क्रिप्ट या किसी चीज़ में सभी विफलता पर बाहर निकलने के लिए अपना शेल सेट नहीं किया है)।

संबंधित नोट पर, 'OR' तार्किक ऑपरेटर cmd1 || cmd2का उपयोग करके ||, cmd2 केवल तभी चलाया जाएगा जब cmd1 विफल हो जाता है (एक गैर-शून्य निकास कोड लौटाता है)।

इन तार्किक संचालकों को कभी-कभी एक मूल कथन के स्थान पर स्क्रिप्ट में उपयोग किया जाता है। उदाहरण के लिए,

if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi

... अधिक संक्षिप्त रूप से प्राप्त किया जा सकता है:

[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"

मुझे यह थोड़ा कम लगता है क्योंकि मेरी समझ से, सफल रिटर्न कोड का मतलब 0 है, जो जब बूल में डाला जाता है, तो एक तार्किक झूठा देता है। इसलिए अधिकांश भाषाओं में प्रयुक्त मकार्थी मूल्यांकन के दर्शन से, यह अगले कथन का मूल्यांकन करने (चलाने) के बजाय तुरंत गलत होना चाहिए।
डेला

33

वाक्य - विन्यास

command1 && command2

कमांड 2 को निष्पादित किया जाता है यदि, और केवल अगर,command1शून्य से बाहर निकलने की स्थिति देता है ( सच )। दूसरे शब्दों में, चलाएंcommand1और यदि यह सफल है, तो दौड़ेंcommand2

command1 ; command2

दोनों command1 और command2 परवाह किए बिना निष्पादित किया जाएगा। अर्धविराम आपको एक पंक्ति में कई कमांड टाइप करने की अनुमति देता है।

संबंधित :

command1 || command2

command2 अगर और वह भी तब, क्रियान्वित किया जाता है command1 रिटर्न एक गैर शून्य से बाहर निकलें स्थिति। दूसरे शब्दों में,command1सफलतापूर्वक चलाएं या चलाएंcommand2


उदाहरण

&& ऑपरेटर:

$ rm /tmp/filename && echo "File deleted"

; ऑपरेटर:

$ echo "foo" ; echo "bar"

|| ऑपरेटर:

$ cat /tmp/filename 2>/dev/null || echo "Failed to open file"

बाहरी कड़ियाँ

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