सशर्त संरचनाओं में अर्धविराम


35

एक में अर्धविराम क्यों लगाएं और दूसरे में क्यों नहीं?

नतीजा वही है

एक कोड

if [ "a" == "a" ]
then
 echo "true"
fi

कोड दो

if [ "a" == "a" ];
then
 echo "true";
fi

दूसरे कोड में अर्धविराम अनावश्यक हैं?

जब अर्धविराम लगाने के लिए आवश्यक है?


2
यह पर्याप्त रूप से और ठीक से उत्तर दिया गया है, लेकिन मैं ओपी को यह भी बताना चाहता था कि; बस किसी भी अंतिम पंक्ति को बदल देता है , इसलिए आप दो आदेशों को एक पंक्ति में जोड़ सकते हैं, जैसे:svn up; make
हारून डी। मैरास्को

1
यह भी ध्यान दें कि दो अर्ध-कोलों ;;का उपयोग केस स्टेटमेंट में मैचों को अलग करने के लिए किया जाता है। ;;यहाँ की आवश्यकता है, वैकल्पिक नहीं .... लेकिन ;;एक ही चीज़ नहीं है ;या ; ;, यह सिर्फ एक बिट यह तरह दिखता है। एकल अर्ध-कॉलन ;एक केस स्टेटमेंट के कमंड भागों में सामान्य रूप से काम करते हैं।
कैस

जवाबों:


31

अर्धविराम की जरूरत तभी होती है जब रेखा का अंत गायब हो:

if [ "a" == "a" ] ; then echo "true" ; fi

अर्धविराम के बिना, आपको सिंटैक्स त्रुटि मिलती है।

मैं उद्धरणों के बारे में आपके प्रश्न को नहीं समझता। क्या आप अधिक विशिष्ट हो सकते हैं?

(और वैसे, के =बजाय का उपयोग कर ==अधिक पोर्टेबल और POSIX अनुरूप है)।


दूसरे कोड में उद्धरण अनावश्यक हैं?
झौंथन

2
दोनों नमूनों में सभी उद्धरण अनावश्यक हैं।
चोराबा

6

अर्धविराम का उपयोग अक्सर किया जाता है, क्योंकि कुछ लोग (/ मुझे उदाहरण के लिए) इस तरह की शैली में पसंद करते हैं:

if [ ... ]; then
   doit-it-then
else
   doit-it-else
fi

इसलिए, यदि तत्कालीन-कीवर्ड को कंडीशन-लाइन पर रखा गया है तो यह neccessary है क्योंकि एक नया कमांड शुरू होता है, जैसा कि चिदोबा द्वारा लिखा गया है।

हालत-जांच में उद्धरण के बारे में वे अक्सर चर के साथ उपयोग किया जाता है यह सुनिश्चित करने के लिए कि कोई भी अपवाद नहीं होता है यदि चर को सौंपा नहीं गया है। यह एक सुरक्षित शैली है और अप्राकृतिक लगती है, लेकिन शेल-प्रोग्रामिंग में भी समय-समय पर कार्यक्रमों की प्रक्रिया होती है, हालांकि सामग्री को चर के लिए नहीं सौंपा जा सकता है। फिर कमांड अभी भी काम कर रहा है क्योंकि एक खाली स्ट्रिंग की तुलना की जाती है।

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