मैंने पहले एक चर पर इस वाक्य को देखा है और काफी यकीन है कि नहीं यह वास्तव में क्या है:स्क्रिप्ट क्या करती है: शक्तियों में क्या करें?
$script:Foo = "Bar"
मैंने पहले एक चर पर इस वाक्य को देखा है और काफी यकीन है कि नहीं यह वास्तव में क्या है:स्क्रिप्ट क्या करती है: शक्तियों में क्या करें?
$script:Foo = "Bar"
वाक्य रचना $script:Foo
सबसे अधिक इस मामले $Foo
में, एक स्क्रिप्ट स्तरीय चर संशोधित करने के लिए प्रयोग किया जाता है। जब चर को पढ़ने के लिए उपयोग किया जाता है, आमतौर पर $Foo
पर्याप्त है। उदाहरण के लिए यह लिख बजाय:
verbose-script.ps1
$script:foo = ''
function f { $script:foo }
मैं इस (कम वर्बोज़ और कार्यात्मक समकक्ष) लिखते थे:
script.ps1
$foo = ''
function f { $foo }
कहाँ $script:Foo
महत्वपूर्ण है जब आप के भीतर से एक स्क्रिप्ट स्तरीय चर संशोधित करना चाहते हैं
PS> $f = 'hi'
PS> & { $f; $f = 'bye';$f }
hi
bye
PS> $f
hi
सूचना ई कि $f
scriptblock बाहर नहीं बदला: एक समारोह या एक गुमनाम scriptblock जैसे जैसे एक और गुंजाइश ven हालांकि हमने इसे स्क्रिप्टब्लॉक के भीतर bye
में संशोधित किया। क्या हुआ कि हमने केवल $f
की एक स्थानीय प्रति संशोधित की है। जब आप script:
(या global:
) जैसे संशोधक को लागू नहीं करते हैं, तो PowerShell एक ही नाम के साथ एक स्थानीय चर में higer-scoped चर पर copy-on-write
करेगा।
ऊपर के उदाहरण को देखते हुए यदि हम वास्तव में $f
करने के लिए एक स्थायी बदलाव बनाना चाहते थे, हम तो एक आपरिवर्तक script:
या global:
उदा .:
PS> $f = 'hi'
PS> & { $f; $global:f = 'bye';$f }
hi
bye
PS> $f
bye
script:
उपसर्ग दाहिने हाथ की ओर नाम का कारण बनता है स्क्रिप्ट दायरे में ऊपर देखा जा सकता है। अनिवार्य रूप से डेटा जो स्क्रिप्ट के लिए स्थानीय है। अन्य मान्य क्षेत्रों में वैश्विक, स्थानीय और निजी शामिल हैं।
दायरे के लिए सहायता अनुभाग में इस विषय पर कुछ विस्तार शामिल है।
help about_Scopes
तरह का प्रयोग करेंगे मुझे यकीन है कि आप निजी मतलब है। :-) –
तो क्या होता है जब आप स्क्रिप्ट के साथ एक स्क्रिप्ट डॉट-स्रोत करते हैं: फ़ंक्शंस और चर पर उपसर्ग? –
जब आप डॉट-स्रोत करते हैं, तो स्क्रिप्ट स्कॉप्ड आइटम स्क्रिप्ट में खींचा जाता है जो डॉट-सोर्सिंग कर रहा है। –