मैंने एक बैश स्क्रिप्ट में निम्न सिंटैक्स देखा:
>$(command) &
मुझे पता है कि &
अंत में एम्परसेंड पृष्ठभूमि में एक कमांड चलाता है, लेकिन मैंने इसे डॉलर के संकेत और कमांड के चारों ओर ब्रैकेट के साथ संयोजन में कभी नहीं देखा है।
यह क्या करता है?
मैंने एक बैश स्क्रिप्ट में निम्न सिंटैक्स देखा:
>$(command) &
मुझे पता है कि &
अंत में एम्परसेंड पृष्ठभूमि में एक कमांड चलाता है, लेकिन मैंने इसे डॉलर के संकेत और कमांड के चारों ओर ब्रैकेट के साथ संयोजन में कभी नहीं देखा है।
यह क्या करता है?
जवाबों:
वाक्य रचना को देखते हुए $(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)
।
&
- पृष्ठभूमि प्रक्रियाऔर फिर एम्परसेंड, या &
प्रतीक, जैसा कि आपने कहा है, पृष्ठभूमि में इसे चलाने के लिए उपयोग किया जाता है।
यह कमांड के रूप में "कमांड" का आउटपुट लेता है और बैकग्राउंड में चलता है। "कार्यात्मक" के साथ तुलनीय है
$( )
, लेकिन कोई आराम नहीं है। यह सिर्फ है$(command) &
, यही मुझे भ्रमित करता है।