जवाबों:
यह बैकटिक्स `` के समान है।
इसे कमांड प्रतिस्थापन ( पॉज़िक्स स्पेसिफिकेशन ) कहा जाता है और यह एक सब-सब्सक्रिप्शन को आमंत्रित करता है। $()
बैकटिक्स (``) के ब्रेसिज़ या बीयून में कमांड को एक सबशेल में निष्पादित किया जाता है और फिर आउटपुट को मूल कमांड में रखा जाता है।
बैकटिक्स के विपरीत, $(...)
फॉर्म को नेस्टेड किया जा सकता है। तो आप दूसरे प्रतिस्थापन के अंदर कमांड प्रतिस्थापन का उपयोग कर सकते हैं।
प्रतिस्थापन के भीतर पात्रों से बचने में एसो मतभेद हैं। मुझे $(...)
फॉर्म पसंद है ।
echo `echo \`echo foo\`` bar
POSIX या में POSIX की तरह गोले ( ksh
, bash
, ash
, zsh
, yash
...), यह की तरह है ``
आदेश के अंदर: $()
मार डाला और उसके मानक आउटपुट से बदल दिया है। शब्द-विभाजन और फ़ाइल नाम का निर्माण तब तक किया जाता है जब तक $()
कि डबल-कोट्स के अंदर न हो । इस प्रकार
chmod 777 $(pwd)
के साथ प्रतिस्थापित किया जाना चाहिए:
chmod 777 "$(pwd)"
वर्तमान कार्य निर्देशिका पथ पर शब्द-विभाजन और फ़ाइल नाम से बचने के लिए।
या इससे भी बेहतर (कुछ गोले को छोड़कर, जैसे zsh, निर्देशिका नाम बदल दिया गया है):
chmod 777 "$PWD"
चूँकि $PWD
एक विशेष चर है जो POSIX गोले में वर्तमान कार्य निर्देशिका के लिए मार्ग रखता है।
या इससे भी बेहतर:
chmod 777 .
चूंकि .
वर्तमान निर्देशिका में प्रविष्टि उस निर्देशिका की कड़ी है।
यह $()
ज्यादातर किसी अन्य कमांड के अंदर एक कमांड निष्पादित करने के लिए उपयोग किया जाता है।
chmod 777 $(pwd)
pwd
कमांड करंट वर्किंग डायरेक्टरी देता है। इसलिए, जब पूरी चीज़ को pwd का आउटपुट निष्पादित किया जाता है, तो वह अपनी स्थिति को बदल देगा और तर्क के रूप में कार्य करेगा chmod
, और इसका परिणाम यह है कि आपके सभी वर्तमान वर्किंग डायरेक्टरी को अनुमति मिलती है 777
जो मुझे लगता है कि उत्पादन वातावरण में कभी भी उपयोग नहीं किया जाना चाहिए;)।