शेल स्क्रिप्ट में बैकटिक्स या डॉलर का उपयोग करना


9

मैं राइटिंग शेल स्क्रिप्ट (बैश का उपयोग करके) व्यस्त हूं जहां मुझे अन्य कमांड के लौटे परिणाम से कुछ चर को पॉप्युलेट करने की आवश्यकता है।

तो मैं इस तरह एक वाक्यविन्यास का उपयोग कर रहा हूँ:

VAR=`command 2>/dev/null`

लेकिन जब स्क्रिप्ट के गोले के बारे में जानकारी की तलाश में, मैंने अक्सर पाया कि उपरोक्त सिंटैक्स का उपयोग करके भी ऊपर प्राप्त किया जा सकता है:

VAR=$(command 2>/dev/null)

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



बेलाक्वा के लिंक मतभेद और उपयोग के बारे में बहुत सारी जानकारी प्रदान करते हैं। चूंकि यह एक उबंटू मुद्दे से संबंधित नहीं है, इसलिए बंद करना, लेकिन प्रोग्रामिंग का अधिक होना। मैंने ऊपर दिए गए लिंक के बाद अत्यधिक अनुशंसा की।
लुइस अल्वाराडो

जवाबों:


13

डॉलर का उपयोग करें। Backticks अर्ध-पदावनत हैं , क्योंकि वे उपयोग करने के लिए अधिक जटिल हैं (लिंक देखें), और जब तक आप कोड गोल्फ नहीं कर रहे हैं और उन्हें एक ही चरित्र को बचाने की आवश्यकता है, तब तक उनके लिए कोई फायदे नहीं हैं । वे शायद कभी भी लोकप्रिय गोले से नहीं हटाए जाएंगे, इसलिए आप अभी तक के लिए सुरक्षित हैं।


3

$()जब भी आप कर सकते हैं डॉलर चिह्न संकेतन के साथ छड़ी । जब आप नेस्टेड कोटिंग करने की आवश्यकता शुरू करते हैं तो बैकटिक्स बोझिल / भ्रमित हो जाते हैं। उदाहरण के लिए:

$ FOO=`echo "foo's"`
$ echo $FOO
foo's

$()पैदावार के साथ backticks की जगह एक ही उत्पादन, और पढ़ने के लिए आसान है (विचार करने के लिए varrying कोण के कम उद्धरण):

$ FOO=$(echo "foo's")
$ echo $FOO
foo's

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


बैकटिक्स को कार्यात्मक रूप से नेस्टेड भी नहीं किया जा सकता है।
बर्नहार्ड

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