bash -c “v = value; इको $ v ”कुछ नहीं दिखाता है


9

एक कॉमन लाइन स्क्रीन से निम्नलिखित को निष्पादित करना:

bash -c "v=value; echo $v"

कुछ नहीं दिखाता है। यह ठीक है? मैं इस तरह के निष्पादन के अंदर एक चर के लिए एक मूल्य कैसे प्रदान कर सकता हूं?


जवाबों:


18

यहाँ दो गोले शामिल हैं:

  • कॉलिंग शेल, इंटरैक्टिव शेल जिसमें से आप इसे चला रहे हैं

  • गैर-लॉगिन, गैर-संवादात्मक शेल, द्वारा प्रायोजित bash -c

अब, समस्या यह है कि दोहरे उद्धरण चिह्नों के भीतर चर को उनके संबंधित मूल्यों तक विस्तारित किया जाता है, यह किसी भी शेल के लिए सही है।

तो, जैसा कि आपने दोहरे उद्धरण चिह्नों का उपयोग किया है, चर विस्तार, $vवास्तव में कॉलिंग शेल में हो रहा है, न कि शेल। लेकिन घोषणा, v=valueगैर-संवादात्मक शेल पर हो रही है।

तो, कुल मिलाकर, आपके पास बुलाया शेल में परिभाषित चर है और कॉलिंग शेल में विस्तारित (पहले से) है। चूंकि कॉलिंग शेल में वैल्यू वैरिएबल परेशान है, इसलिए आपको आउटपुट में कुछ नहीं मिल रहा है।

अब, गोलाकार खोल में जगह लेने के लिए चर परिभाषा और विस्तार करने के लिए, एकल उद्धरण या भागने का उपयोग करें $:

$ bash -c "v=value; echo $v"

$ bash -c 'v=value; echo $v'
value

$ bash -c "v=value; echo \$v"
value

1

$vइंटरेक्टिव शेल द्वारा डबल कोट्स को प्रतिस्थापित किया जाता है। एकल उद्धरण का उपयोग करें:

$ bash -c 'v=value;echo $v'
value
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.