$ (कमांड) और क्या करता है?


10

मैंने एक बैश स्क्रिप्ट में निम्न सिंटैक्स देखा:

 >$(command) &

मुझे पता है कि &अंत में एम्परसेंड पृष्ठभूमि में एक कमांड चलाता है, लेकिन मैंने इसे डॉलर के संकेत और कमांड के चारों ओर ब्रैकेट के साथ संयोजन में कभी नहीं देखा है।

यह क्या करता है?


मुझे पता है कि इस तरह का उपयोग होता है $( ), लेकिन कोई आराम नहीं है। यह सिर्फ है $(command) &, यही मुझे भ्रमित करता है।
अल्फा ओमेगा

जवाबों:


20

संक्षिप्त जवाब

वाक्य रचना को देखते हुए $(command) &के रूप में यदि आप चला बस के उत्पादन में ले लिया है, परिणाम एक ही है commandऔर उसके बाद भागने की कोशिश की है कि एक कमांड के रूप में। और यह सब पृष्ठभूमि में किया जाएगा, जिसका अर्थ है कि टर्मिनल में कोई दृश्यमान आउटपुट या फांसी नहीं होगी।

उदाहरण के लिए, यदि हमारे पास mycommand.txtसामग्री के साथ एक टेक्स्ट फ़ाइल है, तो :

echo "Hello World"

फिर आज्ञा

$(cat mycommand.txt) &

दौड़ने के बराबर होगा

echo "Hello World" &

लेकिन चूंकि हमने एम्परसेंड ( &) जोड़ा है , इसलिए हम इस कमांड से कोई आउटपुट नहीं देखेंगे, इसलिए इस उदाहरण में यह बहुत बेकार होगा।


लंबे उत्तर (स्पष्टीकरण)

डॉलर चिह्न $(चर)

कोष्ठक में बात से पहले डॉलर का संकेत आमतौर पर एक चर को संदर्भित करता है। इसका मतलब यह है कि यह कमांड या तो एक बैश स्क्रिप्ट से उस वेरिएबल के लिए एक तर्क पारित कर रहा है या किसी चीज के लिए उस वेरिएबल का मान प्राप्त कर रहा है। कॉल और वेरिएबल की घोषणा के लिए बैश स्क्रिप्टिंग में अंतर इस प्रकार है:

डॉलर के संकेत के बिना एक चर घोषित करें और इसे डॉलर चिह्न के साथ कॉल करें। उदाहरण के लिए, एक स्क्रिप्ट जिसमें यह शामिल है

#!/bin/bash
STR="Hello World!"
echo $STR

यह उत्पादन होगा

Hello World!

कोष्ठक ()- कमान प्रतिस्थापन

कमांड प्रतिस्थापन एक कमांड के आउटपुट को कमांड को स्वयं बदलने की अनुमति देता है। कमांड प्रतिस्थापन तब होता है जब एक कमांड निम्नानुसार होती है:

$(command)

या

`command`

बैश एक उप-परिवेश में कमांड निष्पादित करके और कमांड के प्रतिस्थापन को कमांड के मानक आउटपुट के साथ बदलकर, किसी भी अनुगामी newlines के साथ विस्तार को निष्पादित करता है। एंबेडेड newlines हटाए नहीं जाते हैं, लेकिन शब्द विभाजन के दौरान उन्हें हटाया जा सकता है। कमांड प्रतिस्थापन $(cat file)को समकक्ष लेकिन तेजी से बदला जा सकता है $(< file)

Ampersand &- पृष्ठभूमि प्रक्रिया

और फिर एम्परसेंड, या &प्रतीक, जैसा कि आपने कहा है, पृष्ठभूमि में इसे चलाने के लिए उपयोग किया जाता है।


2

यह कमांड के रूप में "कमांड" का आउटपुट लेता है और बैकग्राउंड में चलता है। "कार्यात्मक" के साथ तुलनीय है


यह टर्मिनल विंडो में मौजूद एक प्रतीक है जो इस बात पर निर्भर करता है कि आप जो करने की कोशिश कर रहे हैं वह आपके द्वारा प्रविष्टि के लिए आवश्यक नहीं है। जब आप एक टर्मिनल खोलते हैं तो आप इसे तुरंत वहां देखेंगे।
बन्दरमैन_स्टोन्स

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