2012-01-20 13 views
44

मैं देख रहा हूँ बैश लिपियों में दो अलग अलग रूपों जो भी ऐसा ही लगता है:

`some command` 

और

$(some command) 

दोनों के बीच क्या अंतर है, और जब मैं उनमें से हर एक का उपयोग करना चाहिए?

उत्तर

44

कोई अर्थपूर्ण अंतर नहीं है। बैकटिक वाक्यविन्यास पुराना और कम शक्तिशाली संस्करण है। man bash, अनुभाग "कमांड प्रतिस्थापन" देखें।

यदि आपका खोल $() सिंटैक्स का समर्थन करता है, तो इसे प्राथमिकता दें क्योंकि इसे घोंसला जा सकता है।

+0

मुझे लगता है कि बैकटिक्स भी घोंसला जा सकता है। उदाहरण के लिए: '\' echo \\ 'foo \\' \ '' –

+10

@ मिशामोरोस्को: 'e' echo \ 'foo \' \ 'जैसे अभिव्यक्तियां ($ $ (echo $ (foo) के विपरीत)') जीता अंतर्निहित अस्पष्टता के कारण सामान्य रूप से काम नहीं करते क्योंकि प्रत्येक ''' 'खोल या बंद हो सकता है। यह किस्मत या विशेष सुविधाओं के कारण विशेष मामलों के लिए काम कर सकता है। – thiton

+1

वहाँ _is_ एक अर्थपूर्ण अंतर है: बैकटिक वाक्यविन्यास एक अलग और गैर-स्पष्ट तरीके से बैकस्लाश को संभालता है। देखें: http://mywiki.wooledge.org/BashFAQ/082 – benkc

संबंधित मुद्दे