কম্পিউটার টিউটোরিয়াল

মাস্টার পাওয়ারশেল ভেরিয়েবল: দক্ষ স্ক্রিপ্টিংয়ের আপনার গাইড

কম্পিউটার সায়েন্সে (এবং সাধারন কম্পিউটিং-এ) একটি ভেরিয়েবল হলো মেমোরিতে একটি লোকেশন যা পরবর্তী ব্যবহারের জন্য নির্বিচারে তথ্য ধারণ করে। অন্য কথায়, এটি একটি অস্থায়ী স্টোরেজ কন্টেইনার যেখানে আপনি ডেটা রাখতে এবং বের করতে পারেন। বাশ শেলে, সেই ডেটা হতে পারে একটি শব্দ (কম্পিউটার ভাষায় স্ট্রিং) বা একটি সংখ্যা (একটি ইন্টিজার)।

আপনি হয়তো কখনো নিজের কম্পিউটারে সচেতনভাবে ভেরিয়েবল ব্যবহার করেননি, কিন্তু আপনার জীবনের অন্য কোনো ক্ষেত্রে ভেরিয়েবল ব্যবহার করেছেন। আপনি যখন "আমাকে সেটি দাও" বা "এটাকে তাকাও" বলেন, তখন আপনি গ্রামারিক্যাল ভেরিয়েবল ব্যবহার করছেন (আপনি সেগুলো সর্বনাম হিসেবে ভাবেন)। "এই" এবং "সেটি"-র অর্থ নির্ভর করে আপনি মনে কী চিত্র আঁকছেন, অথবা আপনি আপনার শ্রোতাদের বোঝাতে কোন নির্দেশক হিসেবে কীতে নির্দেশ করছেন। গাণিতিক সমস্যা সমাধান করার সময় আপনি অজানা মানকে প্রতিনিধিত্ব করার জন্য ভেরিয়েবল ব্যবহার করেন, যদিও আপনি সেগুলোকে ভেরিয়েবল বলেন না।

এই আর্টিকেলটি পাওয়ারশেলের ভেরিয়েবল নিয়ে আলোচনা করে, যা উইন্ডোজ, লিনাক্স, বা ম্যাক-এ চলে। ওপেন সোর্স বাশ শেল ব্যবহারকারীদের আমার বাশ শেলে ভেরিয়েবল সম্পর্কি আর্টিকেল পড়তে বলা হয়েছে (যদিও আপনি লিনাক্সে পাওয়ারশেল চ चला পারেন, এবং এটি ওপেন সোর্স, তাই আপনি এখানেও ফলো করতে পারেন)।

Note: এই আর্টিকেলের উদাহরণগুলো ওপেন সোর্স অপারেটিং সিস্টেম লিনাক্সে চলমান একটি পাওয়ারশেল সেশন থেকে, তাই আপনি যদি উইন্ডোজ বা ম্যাক-এ হন তবে ফাইল পাথগুলো ভিন্ন হবে। যাইহোক, উইন্ডোজ /-কে \-এ অটোমেটিক্যালি কনভার্ট করে, এবং সব উদাহরণ সকল প্ল্যাটফর্মে কাজ করে, যেহেতু আপনি স্পষ্ট পার্থক্যগুলো সাবস্টিটিউট করেন (উদাহরণস্বরূপ, কাফি অসম্ভব যে আপনার ইউজারনেম 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-এ এম্বেডেড ছিল, সেই ভেরিয়েবলটি রিকল করার সময় এক্সপ্যান্ড হয়ে যায়। ডিফল্ট ভেরিয়েবল এইভাবে ব্যবহার করলে আপনাকে পোর্টেবল স্ক্রিপ্ট লিখতে সাহায্য করে যা প্ল্যাটফর্মের পারivée কাজ করে।

ভেরিয়েবলগুলো সাধারণত একটি সিস্টেম থেকে অন্য সিস্টেমে তথ্য যোগাযোগ করার জন্য। এই সাধারণ উদাহরণে, আপনার ভেরিয়েবল খুব কাজের নয়, কিন্তু এটিও তথ্য আদান-প্রদান করতে পারে। উদাহরণস্বরূপ, যেহেতু 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.

Note: এই উদাহরণগুলোতে, অনুমান করুন 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

অ্যারে পাওয়ারশেলে স্পেশাল টাইপের ভেরিয়েবল এবং এতদ için একটি ArrayList অবজেক্ট দরকার। এটিই আউট অফ স্কোপ এই আর্টিকেলের জন্য, কারণ এটিতে পাওয়ারশেলের .NET ইন্টারন্যালস গভীরে যেতে হয়।

এনভায়রনমেন্ট ভেরিয়েবল দিয়ে গ্লোবাল হোন

এই আর্টিকেলে এতক্ষণে তৈরি করা ভেরিয়েবলগুলো লোকাল, অর্থাৎ সেগুলো শুধু আপনার পাওয়ারশেল সেশনে প্রযোজ্য যা আপনি সেগুলো তৈরি করেছেন। অন্যান্য প্রসেসের জন্য অ্যাক্সেসযোগ্য ভেরিয়েবল তৈরি করতে, আপনি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করতে পারেন, যা ভবিষ্যতের একটি আর্টিকেলে কভার করা হবে।

  1. Windows-এ কাস্টম এনভায়রনমেন্ট ভেরিয়েবল তৈরি করা

  2. SQL Server-এ ভেরিয়েবল ডিক্লেয়ার করা (Declare Variables)

  3. মাস্টার বাশ ভেরিয়েবল: ডিক্লেয়ার, অ্যাসাইন ও কার্যকর ব্যবহার

  4. মাস্টারিং পאוয়ারশেল: উইন্ডোজ ও লিনাক্সে এনভায়রনমেন্ট ভেরিয়েবল ম্যানেজমেন্ট