नए विकास के लिए `…` प्रतिस्थापन का उपयोग करने या सिखाने का कोई कारण?


16

यह मेरी समझ है कि अधिक आधुनिक $(...)कमांड प्रतिस्थापन सिंटैक्स को पुराने- `आधारित सिंटैक्स पर पसंद किया जाता है , आसान और कम त्रुटि वाले नेस्टिंग और बच सिंटैक्स के कारण।

इसके अलावा, ऐसा लगता है कि /bin/shआधुनिक उपयोग समर्थन में अधिकांश शैल शैल $(…):

  • दे घुमा के
  • ऐश (और इसलिए बिजीबॉक्स, इसलिए सबसे अधिक एम्बेडेड लिनक्स)
  • पानी का छींटा
  • फ्रीबीएसडी / बिन / श

और $(…)IEEE 1003.1 द्वारा निर्दिष्ट किया गया है।

इसलिए मेरे पास 2 बहुत ही संबंधित प्रश्न हैं:

  • क्या शेल स्क्रिप्ट्स के नए विकास में `का उपयोग करने का कोई कारण है जब तक आप एक विशिष्ट पुरानी प्रणाली के बारे में नहीं जानते हैं जिसे स्क्रिप्ट को चलाने की आवश्यकता होगी?
  • क्या कोई कारण नहीं है कि यूनिक्स प्रोग्रामिंग के छात्रों को केवल लिखना न पढ़ा जाए $(...), और `केवल एक अप्रचलित संस्करण के रूप में चर्चा करें कि वे संभावित रूप से मुठभेड़ करेंगे यदि वे अन्य डेवलपर्स के शेल स्क्रिप्ट पढ़ रहे हैं (और आवश्यकता हो सकती है यदि वे वास्तव में पुरानी प्रणाली या गैर-मानक के साथ काम कर रहे हैं किसी कारण के लिए)?

7
नहीं, इसका उपयोग करने या सिखाने का कोई मतलब नहीं है `...`। यह केवल बॉर्न शेल के साथ पिछड़े पोर्टेबिलिटी के लिए है (जैसे थॉमसन शेल के साथ बैकवर्ड पोर्टेबिलिटी के लिए बॉर्न शेल के ^समान ही था |)। ध्यान दें कि (t)cshनहीं है, $(...)लेकिन (या तो उन्हें सिखाने या सिखाने का कोई मतलब नहीं है)।
स्टीफन चेजलस

2
यह एक ग्रूचो मार्क्स की बात है; {)
गोल्डीलॉक्स

2
रुको, backticks पदावनत हैं ?? किसी को भी एक विहित संदर्भ की व्याख्या क्यों है? (अजीब सिंटेक्स केरेक्टर्स बहुत मुश्किल पर खोज करने के लिए कर रहे हैं।)
MathematicalOrchid

1
टाइप करने में आसान। `` - 2 कुंजी दबाएं; $()- शिफ्ट + 4,9, शिफ्ट + 0 - 5 प्रमुख प्रेस;
वि।

3
@MathematicalOrchid stackoverflow.com/questions/9405478/… बहुत अच्छा लगता है। बैकटिक्स को ठीक से घोंसला बनाना बहुत मुश्किल है, खासकर जब अतिरिक्त उद्धरण शामिल होते हैं।
माइकल एकस्ट्रैंड

जवाबों:


19

चूंकि बैक-टिक्स का उपयोग अक्सर किया जाता है, इसलिए इस वाक्य रचना को पढ़ाने के लिए समझ में आता है।

बेशक, $()स्टाइल कमांड प्रतिस्थापन को डिफ़ॉल्ट शैली (और मानक अनुरूप निर्माण) के रूप में जोर दिया जाना चाहिए।

बैक-टिक्स अभी भी लोकप्रिय क्यों हैं? क्योंकि वे टाइपिंग में एक चरित्र को बचाते हैं, और वे यकीनन आंख पर भारी पड़ते हैं।


18
मैं एक विशेषता के रूप में "आंख पर कम भारी" नहीं
लिखूंगा

1
आम तौर पर मैं साधारण मामलों में बैकस्टिक्स का उपयोग करता हूं, और जटिल मामलों में $ () का। लेकिन बहुत अधिक स्क्रिप्ट अब तक बैकस्टिक्स का उपयोग कर रहे हैं, और कब्रों को उनके साथ गुंजाइश बनाने में सक्षम होना था।
पेटेर - मोनिका

@ajonwryan उस मामले में बग संक्षिप्तता के कारण नहीं है, बल्कि मनमाने मुद्दे हैं। यानी, बैकटिक्स का उपयोग करना आंख पर आसान होता है, लेकिन यही कारण है कि यह ह्रास नहीं है। आप कहते हैं कि करने के लिए चीनी परिभाषा बुरा कर रहा है और हम सभी को जो कुछ के लिए एएसएम को प्राथमिकता देनी चाहिए ... असल में मैं के रूप को की तरह कोशिश कर रहे हैं जब तक $()बेहतर लेकिन बैकटिक आसान और अधिक KISS कर रहे हैं; सामान्य प्रोग्रामिंग का पैवेलियन ओसीडी परिणाम हो सकता है।
गोल्डीलॉक्स

@goldilocks एक बार जब आप बड़े हो जाते हैं, तो पठनीयता वैसे भी बहुत कठिन होती है: मेरी उम्र में कोड में व्यावहारिक रूप से अदृश्य होते हैं ...
jasonwryan

3
उदाहरण के लिए एक फ्रेंच कीबोर्ड पर, `है, जबकि Altrg + ई, (प्रकार के लिए अजीब) है $, (, )किसी भी आपरिवर्तक जरूरत नहीं है।
स्टीफन चेज़लस

5

मैं उन्हें प्रोग्रामिंग के लिए इस्तेमाल नहीं करूंगा, और अप्रचलित के रूप में शेल स्क्रिप्ट में बैकटिक प्रतिस्थापन के उपयोग को पढ़ाना ठीक है (यह सर्वसम्मति लगती है)। मुझे नहीं लगता कि वे स्वाभाविक रूप से बुरे हैं, और (कम से कम अपने औसत ट्यूटोरियल द्वारा लिनक्स कमांड लाइन को देखते हुए) वे अभी भी अक्सर सरल स्निपेट / वन-लाइनर्स में उपयोग किए जाते हैं, जहां वे संभवत: नेस्टेड नहीं होंगे और चीजें आप 'केवल एक बार करने जा रहे हैं।

कमांड प्रतिस्थापन देखें : बैकटिक्स या डॉलर साइन / पैरेन संलग्न हैं?


1

मैं $()निर्माण का उपयोग करने से बचता हूं क्योंकि यह पोर्टेबल नहीं है - वास्तविक दुनिया में। आपने चार गोले सूचीबद्ध किए हैं - आसपास की तुलना में बहुत अधिक विविधताएं हैं (परिमाण का एक क्रम?)। सोलारिस / बिन / श में अपनी स्क्रिप्ट चलाने की कोशिश करें और देखें कि आप कैसे जाते हैं।

दूसरी ओर, आप पुरानी प्रणालियों का समर्थन कब बंद करते हैं? क्या आप चीजों को करने के नए तरीकों के लिए प्रगति नहीं कर सकते? मुझे लगता है कि आपको अपने स्वयं के निर्णय पर भरोसा करना चाहिए, और यदि आप पुराने तरीके से नए तरीके का एक निश्चित लाभ देख सकते हैं, तो इसके लिए जाएं ... यह उनमें से एक नहीं है (व्यक्तिगत रूप से मुझे बैक्टिक्स बहुत स्पष्ट लगता है - वे नहीं हो सकते शेल चर प्रतिस्थापन के साथ भ्रमित होना, जो एक अलग बात है)


1
POSIX निर्दिष्ट नहीं करता है कि /bin/shअनुरूप होना चाहिए। सोलारिस /bin/shवास्तव में बहुत गैर-अनुरूप है - हालांकि सोलारिस 9/10 / ... आधिकारिक तौर पर पोसिक्स अनुपालन कर रहे हैं। यह $()सिर्फ एक निर्माण है जो इसे समझ में नहीं आता है। लेकिन वहाँ कई और अधिक समझ में नहीं आता है या अलग तरह से व्याख्या कर रहे हैं। जिस shरास्ते से लौटा, उसके अनुरूप खोजने के लिए पोर्टेबल तरीका getconf PATH
मैक्सक्लेपजिग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.