कंप्यूटर साइंस (और कैज़ुअल कंप्यूटिंग) में, एक वेरिएबल मेमोरी में एक स्थान है जो बाद में उपयोग के लिए मनमाना जानकारी रखता है। दूसरे शब्दों में, यह आपके लिए डेटा डालने और निकालने के लिए एक अस्थायी स्टोरेज कंटेनर है। बैश शेल में, वह डेटा एक शब्द (कंप्यूटर भाषा में एक स्ट्रिंग) या एक संख्या (एक इंटीजर) हो सकता है।
आपने अपने कंप्यूटर पर कभी (जानबूझकर) वेरिएबल का उपयोग नहीं किया होगा, लेकिन आपने शायद अपने जीवन के किसी अन्य क्षेत्र में वेरिएबल का उपयोग किया है। जब आप "मुझे वह दो" या "इसे देखो" जैसी बातें कहते हैं, तो आप व्याकरणिक वेरिएबल का उपयोग कर रहे हैं (आप उन्हें सर्वनाम मानते हैं)। "इस" और "वह" का अर्थ इस बात पर निर्भर करता है कि आप अपने दिमाग में क्या चित्रित कर रहे हैं, या आप अपने दर्शकों को यह बताने के लिए संकेतक के रूप में क्या इंगित कर रहे हैं कि आप किस चीज का उल्लेख कर रहे हैं। जब आप गणित करते हैं, तो आप अज्ञात मूल्यों के लिए खड़े होने के लिए वेरिएबल का उपयोग करते हैं, भले ही आप शायद उन्हें वेरिएबल न कहें।
यह लेख पावरशेल में वेरिएबल को संबोधित करता है, जो विंडोज, लिनक्स, या मैक पर चलता है। ओपन सोर्स बैश शेल के उपयोगकर्ताओं को बैश शेल में वेरिएबल के बारे में मेरे लेख का संदर्भ लेना चाहिए (हालांकि आप लिनक्स पर पावरशेल चला सकते हैं, और यह ओपन सोर्स है, इसलिए आप अभी भी इस लेख के साथ अनुसरण कर सकते हैं)।
नोट: इस लेख के उदाहरण ओपन सोर्स ऑपरेटिंग सिस्टम लिनक्स पर चल रहे पावरशेल सत्र से हैं, इसलिए यदि आप विंडोज या मैक पर हैं तो फाइल पाथ अलग होंगे। हालांकि, विंडोज स्वचालित रूप से / को \ में बदल देता है, और सभी उदाहरण सभी प्लेटफॉर्म पर काम करते हैं, बशर्ते आप स्पष्ट अंतरों को प्रतिस्थापित करें (उदाहरण के लिए, यह सांख्यिकीय रूप से असंभव है कि आपका यूजरनेम seth है)।
वेरिएबल किस लिए हैं?
क्या आपको पावरशेल में वेरिएबल की आवश्यकता है यह इस बात पर निर्भर करता है कि आप टर्मिनल में क्या करते हैं। कुछ उपयोगकर्ताओं के लिए, वेरिएबल डेटा प्रबंधित करने का एक अनिवार्य साधन हैं, जबकि अन्य के लिए वे मामूली और अस्थायी सुविधाएं हैं, या कुछ के लिए, वे अस्तित्वहीन भी हो सकते हैं।
अंततः, वेरिएबल एक उपकरण हैं। आप उनका उपयोग तब कर सकते हैं जब आपको उनका उपयोग मिले, या उन्हें इस सुकून में छोड़ दें कि वे आपके OS द्वारा प्रबंधित हैं। हालांकि, ज्ञान शक्ति है, और यह समझना कि बैश में वेरिएबल कैसे काम करते हैं, आपको सभी प्रकार की अप्रत्याशित रचनात्मक समस्या-समाधान की ओर ले जा सकता है।
वेरिएबल सेट करें
वेरिएबल बनाने के लिए आपको विशेष अनुमति की आवश्यकता नहीं है। वे बनाने के लिए मुफ्त हैं, उपयोग करने के लिए मुफ्त हैं, और आमतौर पर हानिरहित हैं। पावरशेल में, आप एक वेरिएबल नाम परिभाषित करके और फिर Set-Variable कमांड के साथ उसका मान सेट करके एक वेरिएबल बनाते हैं। नीचे दिया गया उदाहरण FOO नामक एक नया वेरिएबल बनाता है और इसका मान स्ट्रिंग $HOME/Documents पर सेट करता है:
PS> Set-Variable -Name FOO -Value "$HOME/Documents"
सफलता भयानक रूप से चुप है, इसलिए आप आश्वस्त महसूस नहीं कर सकते कि आपका वेरिएबल सेट हो गया। आप Get-Variable (gv संक्षेप में) कमांड के साथ स्वयं परिणाम देख सकते हैं। यह सुनिश्चित करने के लिए कि वेरिएबल को ठीक वैसे ही पढ़ा जाता है जैसे आपने इसे परिभाषित किया था, आप इसे कोट्स में भी लपेट सकते हैं। ऐसा करने से वेरिएबल में दिखाई दे सकने वाले किसी भी विशेष वर्ण को संरक्षित किया जाता है; इस उदाहरण में, यह लागू नहीं होता, लेकिन यह अभी भी एक अच्छी आदत है:
PS> Get-Variable "FOO" -valueOnly
/home/seth/Documents
ध्यान दें कि FOO की सामग्री ठीक वैसी नहीं है जैसी आपने सेट की थी। आपके द्वारा वेरिएबल के लिए सेट किया गया लिटरल स्ट्रिंग $HOME/Documents था, लेकिन अब यह /home/seth/Documents के रूप में दिख रहा है। ऐसा इसलिए हुआ क्योंकि आप वेरिएबल को नेस्ट कर सकते हैं। $HOME वेरिएबल वर्तमान उपयोगकर्ता की होम डायरेक्टरी की ओर इंगित करता है, चाहे वह विंडोज पर C:\Users में हो, लिनक्स पर /home में, या मैक पर /Users में। चूंकि $HOME FOO में एम्बेडेड था, वह वेरिएबल याद करते समय एक्सपैंड हो जाता है। इस तरह डिफ़ॉल्ट वेरिएबल का उपयोग करने से आपको पोर्टेबल स्क्रिप्ट लिखने में मदद मिलती है जो प्लेटफॉर्म पर काम करती हैं।
वेरिएबल आमतौर पर एक सिस्टम से दूसरे सिस्टम में जानकारी पहुंचाने के लिए होते हैं। इस सरल उदाहरण में, आपका वेरिएबल बहुत उपयोगी नहीं है, लेकिन यह अभी भी जानकारी संप्रेषित कर सकता है। उदाहरण के लिए, चूंकि FOO वेरिएबल की सामग्री एक फाइल पाथ है, आप FOO का उपयोग उस डायरेक्टरी के शॉर्टकट के रूप में कर सकते हैं जिसका मान संदर्भित करता है।
FOO वेरिएबल की सामग्री को संदर्भित करने के लिए न कि वेरिएबल को स्वयं, वेरिएबल को डॉलर चिह्न ($) से पूर्व करें:
PS> pwd
/home/seth
PS> cd "$FOO"
PS> pwd
/home/seth/Documents
वेरिएबल क्लियर करें
आप Remove-Variable कमांड के साथ एक वेरिएबल को हटा सकते हैं:
PS> Remove-Variable -Name "FOO"
PS> gv "FOO"
gv : Cannot find a variable with the name 'FOO'.
[...]
व्यवहार में, एक वेरिएबल को हटाना आमतौर पर आवश्यक नहीं है। वेरिएबल अपेक्षाकृत "सस्ते" हैं, इसलिए आप उन्हें बना सकते हैं और जब आपको उनकी आवश्यकता न हो तो उन्हें भूल सकते हैं। हालांकि, ऐसे समय हो सकते हैं जब आप यह सुनिश्चित करना चाहें कि एक वेरिएबल खाली है ताकि किसी अन्य प्रोसेस को अवांछित जानकारी देने से बचा जा सके जो उस वेरिएबल को पढ़ सकती है।
टकराव सुरक्षा के साथ नया वेरिएबल बनाएं
कभी-कभी, आपके पास यह मानने का कारण हो सकता है कि एक वेरिएबल पहले से ही आपके या किसी अन्य प्रक्रिया द्वारा सेट किया गया था। यदि आप इसे ओवरराइड नहीं करना चाहते हैं, तो आप या तो New-Variable का उपयोग कर सकते हैं, जिसे उसी नाम के वेरिएबल के पहले से मौजूद होने पर विफल होने के लिए डिज़ाइन किया गया है, या आप किसी वेरिएबल की जांच के लिए एक कंडीशनल स्टेटमेंट का उपयोग कर सकते हैं:
PS> New-Variable -Name FOO -Value "example"
New-Variable : A variable with name 'FOO' already exists.
नोट: इन उदाहरणों में, मान लें कि FOO /home/seth/Documents पर सेट है।
वैकल्पिक रूप से, आप किसी मौजूदा वेरिएबल की जांच के लिए एक सरल if स्टेटमेंट बना सकते हैं:
PS> if ( $FOO )
>> { gv FOO } else
>> { Set-Variable -Name "FOO" -Value "quux" }
वेरिएबल में जोड़ें
एक वेरिएबल को ओवरराइड करने के बजाय, आप किसी मौजूदा में जोड़ सकते हैं। पावरशेल में, वेरिएबल के विविध प्रकार होते हैं, जिनमें स्ट्रिंग, इंटीजर, और ऐरे शामिल हैं। जब एक वेरिएबल बनाने का चयन करते हैं जिसमें अनिवार्य रूप से एक से अधिक मान होते हैं, तो आपको यह तय करना होगा कि क्या आपको कैरेक्टर-डिलीमिटेड स्ट्रिंग या ऐरे की आवश्यकता है। आप एक तरफ या दूसरी तरफ परवाह नहीं कर सकते हैं, लेकिन वेरिएबल के डेटा को प्राप्त करने वाला एप्लिकेशन एक या दूसरे की अपेक्षा कर सकता है, इसलिए अपने लक्ष्य के आधार पर अपनी पसंद बनाएं।
स्ट्रिंग वेरिएबल में डेटा जोड़ने के लिए, += सिंटैक्स का उपयोग करें:
PS> gv FOO
foo
PS> $FOO += ",bar"
PS> gv FOO
foo,bar
PS> $FOO.getType().Name
String
ऐरे पावरशेल में विशेष प्रकार के वेरिएबल हैं और ArrayList ऑब्जेक्ट की आवश्यकता होती है। यह इस लेख के दायरे से बाहर है, क्योंकि इसके लिए पावरशेल के .NET इंटर्नल में गहराई से जाने की आवश्यकता होती है।
एनवायरनमेंट वेरिएबल के साथ ग्लोबल जाएं
अब तक इस लेख में बनाए गए वेरिएबल लोकल रहे हैं, जिसका अर्थ है कि वे केवल उस पावरशेल सत्र पर लागू होते हैं जिसमें आप उन्हें बनाते हैं। अन्य प्रोसेस के लिए सुलभ वेरिएबल बनाने के लिए, आप एनवायरनमेंट वेरिएबल बना सकते हैं, जिसे भविष्य के लेख में शामिल किया जाएगा।