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

ব্যাশ ভেরিয়েবল মাস্টার করুন: গ্লোবাল ও লোকাল ব্যবহারের ৬টি প্র্যাক্টিক্যাল উদাহরণ

ব্যাশ ভেরিয়েবল মাস্টার করুন: গ্লোবাল ও লোকাল ব্যবহারের ৬টি প্র্যাক্টিক্যাল উদাহরণএই আর্টিকেল আমাদের চলমান ব্যাশ টিউটোরিয়াল সিরিজের অংশ। অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজের মতো, ব্যাশও ভেরিয়েবল প্রদান করে।

ব্যাশ ভেরিয়েবল প্রোগ্রামের জীবনকালীন আপনার প্রয়োজনীয় ইনফরমেশন জন্য টেম্পোরারি স্টোরেজ প্রদান করে।

সিনট্যাক্স:

VARNAME=VALUE

নোট: "=" চিহ্নের চারপাশে কোনো স্পেস থাকা উচিত নয়। আপনি যখন VAR=VALUE ব্যবহার করেন, শেল "=" কে একটি সিম্বল হিসেবে দেখে এবং কমান্ডটিকে ভেরিয়েবল অ্যাসাইনমেন্ট হিসেবে বিবেচনা করে। আপনি যখন VAR = VALUE ব্যবহার করেন, শেল অনুমান করে VAR অবশ্যই একটি কমান্ডের নাম এবং এটি এক্সিকিউট করার চেষ্টা করে।

শেল ভেরিয়েবলের টাইপের খেয়াল করে না। ভেরিয়েবল স্ট্রিং, ইন্টিজার, বা রিয়েল নম্বর স্টোর করতে পারে।

উদাহরণ.১ সিম্পল ব্যাশ ভেরিয়েবল অ্যাসাইনমেন্ট ব্যবহার

নিচের স্ক্রিপ্টটি LIST নামে একটি ভেরিয়েবল তৈরি করে এবং "/var/opt/bin" মান অ্যাসাইন করে। ভেরিয়েবল অ্যাক্সেস করতে, শুধু ভেরিয়েবল নামের সামনে $ যোগ করুন, যা সেটি স্টোর করা মান দেবে।

$ cat sample.sh #!/bin/bash LIST="/var/opt/bin/" ls -l $LIST

উপরোক্ত স্ক্রিপ্ট এক্সিকিউট করুন, যা /var/opt/bin-কে লং ফরম্যাটে লিস্ট করবে নিচের মত।

$ ./sample.sh total 8 drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist

ব্যাশ ভেরিয়েবল স্কোপ – লোকাল এবং গ্লোবাল

ব্যাশে, ভেরিয়েবল ডিক্লেয়ার করতে হয় না। কিন্তু, আপনি যে ভেরিয়েবলটি এখনও ব্যবহার করেননি সেটি অ্যাক্সেস করলে, আপনাকে কোনো ওয়ার্নিং বা এরর মেসেজ মেলবে না। বরং, এটি ব্ল্যাঙ্ক ভ্যালু দেখাবে।

উদাহরণ ২. ব্যাশ ভেরিয়েবলে ব্ল্যাঙ্ক ভ্যালু

$ cat var1.sh #!/bin/sh echo "Variable value is: $VAR1" VAR1="GEEKSTUFF" echo "Variable value is: $VAR1" $ ./var1.sh Variable value is: Variable value is: GEEKSTUFF

উপরে দেখানো মতে, প্রাথমিকভাবে ভেরিয়েবলটিতে ব্ল্যাঙ্ক ভ্যালু থাকবে, অ্যাসাইন করার পর আপনি আপনার মান পাবেন। এক্সপোর্ট কমান্ড একটি ইন্টারেক্টিভ শেল থেকে ভেরিয়েবল এক্সপোর্ট করতে ব্যবহৃত হয়। এক্সপোর্ট ভেরিয়েবলের স্কোপে এর ইফেক্ট দেখায়।

উদাহরণ ৩. এক্সপোর্ট ছাড়া ব্যাশ ভেরিয়েবল

একটি ইন্টারেক্টিভ শেলে একটি ভেরিয়েবলকে মান দিয়ে অ্যাসাইন করুন, এবং সেটি আপনার শেল স্ক্রিপ্টে অ্যাক্সেস করার চেষ্টা করুন।

$ VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"

এখন, উপরের স্ক্রিপ্টটি এক্সিকিউট করুন নিচের মত।

$ ./var2.sh VAR2= VAR2=UNIX

আপনি এখনও ভেরিয়েবল VAR2-এর জন্য ব্ল্যাঙ্ক ভ্যালু পাবেন। শেল VAR2 ভেরিয়েবলটিকে LINUX মানসহ শুধু করেন্ট শেলে স্টোর করে। var2.sh এক্সিকিউশনের সময়, এটি একটি শেল স্পায়ন করে এবং স্ক্রিপ্টটি এক্সিকিউট করে। তাই স্পন করা শেলে VAR2 ভেরিয়েবলটির মান থাকবে না। আপনাকে ভেরিয়েবলটি এক্সপোর্ট করতে হবে যাতে অন্য প্রোগ্রাম—সহ একটি শেল স্ক্রিপ্ট—এটিকে ইনহেরিট করতে পারে, নিচের মত।

উদাহরণ ৪. একটি ব্যাশ ভেরিয়েবল এক্সপোর্ট করা

$ export VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"

এখন উপরের স্ক্রিপ্টটি এক্সিকিউট করুন।

$ ./var2.sh VAR2=LINUX VAR2=UNIX $ $echo $VAR2 LINUX

এখন, আপনি লক্ষ্য করবেন যে var2.sh শেল স্ক্রিপ্ট এক্সিকিউশনের পর VAR2-এর মান LINUX। কারণ ভেরিয়েবলগুলো আপনার ইন্টারেক্টিভ শেলে ফিরে পাস করা হয় না, যদি না আপনি স্ক্রিপ্টটি করেন্ট শেলে এক্সিকিউট করেন।

একটি ব্যাশ ভেরিয়েবল ডিক্লেয়ার করা

ব্যাশে declare স্টেটমেন্ট ব্যবহার করে, আমরা ভেরিয়েবলগুলোর অ্যাসাইন করা মানকে লিমিট করতে পারি। এটি ভেরিয়েবলগুলোর প্রপার্টি রেস্ট্রিক্ট করে। ডিক্লেয়ার স্টেটমেন্টের অপশনটি ভেরিয়েবলের টাইপ নির্ধারণ করতে ব্যবহৃত হয়।

সিনট্যাক্স:

declare option variablename
  • declare হলো একটি কিওয়ার্ড
  • অপশন হতে পারে:
    • -r রিড-অনলি ভেরিয়েবল
    • -i ইন্টিজার ভেরিয়েবল
    • -a অ্যারে ভেরিয়েবল
    • -f ফাংশনগুলির জন্য
    • -x ডিক্লেয়ার করে এবং সাবসিকোয়েন্ট কমান্ডগুলোর জন্য এনভায়রনমেন্টের মাধ্যমে এক্সপোর্ট করে।

উদাহরণ ৫. declare ব্যবহার করে ব্যাশ ভেরিয়েবল ডিক্লেয়ারেশন

$ cat declar.sh #!/bin/bash declare -i intvar intvar=123 # ইন্টিজার মান অ্যাসাইন করা। echo $intvar intvar=12.3 # একটি ইন্টিজার ভেরিয়েবলে স্ট্রিং টাইপ মান স্টোর করার চেষ্টা echo $intvar declare -r rovar=281 rovar=212 # রিড-অনলি ভেরিয়েবল পরিবর্তন করার চেষ্টা।

নিচের এক্সিকিউশন থেকে, আপনি ভেরিয়েবলে ইনভ্যালিড ডেটা অ্যাসাইন করার সময় এরর মেসেজ দেখতে পাবেন।

$ ./declar.sh 123 t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3") 123 t.sh: line 11: rovar: readonly variable

গ্লোবাল ব্যাশ ভেরিয়েবল

গ্লোবাল ভেরিয়েবলগুলাকে এনভায়রনমেন্ট ভেরিয়েবলও বলা হয়, যা সকল শেলে উপলব্ধ থাকবে। printenv কমান্ড সকল এনভায়রনমেন্ট ভেরিয়েবল দেখাতে ব্যবহৃত হয়।

$ printenv SHELL=/bin/bash HISTSIZE=1000 SSH_TTY=/dev/pts/1 HOME=/root LOGNAME=root CVS_RSH=ssh

লোকাল ব্যাশ ভেরিয়েবল

লোকাল ভেরিয়েবল শুধু কোড ব্লকের ভিতরে ভিজিবল। local হলো একটি কিওয়ার্ড যা লোকাল ভেরিয়েবল ডিক্লেয়ার করতে ব্যবহৃত হয়। একটি ফাংশনে, একটি লোকাল ভেরিয়েবলের অর্থ শুধু সেই ফাংশন ব্লকের ভিতরে থাকে।

উদাহরণ ৬. গ্লোবাল এবং লোকাল ব্যাশ ভেরিয়েবল

$ cat localvar.sh #!/bin/bash pprint() { local lvar="Local content" echo -e "Local variable value with in the function" echo $lvar gvar="Global content changed" echo -e "Global variable value with in the function" echo $gvar } gvar="Global content" echo -e "Global variable value before calling function" echo $gvar echo -e "Local variable value before calling function" echo $lvar pprint echo -e "Global variable value after calling function" echo $gvar echo -e "Local variable value after calling function" echo $lvar

উপরের স্ক্রিপ্টটি এক্সিকিউট করুন,

$ sh t.sh Global variable value before calling function Global content Local variable value before calling function Local variable value with in the function Local content Global variable value with in the function Global content changed Global variable value after calling function Global content changed Local variable value after calling function

উপরোক্ত আউটপুটে, লোকাল ভেরিয়েবল ফাংশন কল করার আগে এবং পরে শুধু খালি ভ্যালু দেখাবে। এর স্কোপ শুধু ফাংশনের ভিতরে। ফাংশনের বাইরে এটি অদৃশ্য হয়ে যায়, 반면ে গ্লোবাল ভেরিয়েবল ফাংশন এক্সিকিউশনের পরেও আপডেটেড ভ্যালু ধারণ করে।


  1. rbash: রেস্ট্রিক্টেড Bash শেল মাস্টার করুন – কনসেপ্ট, ব্যবহার, এবং প্র্যাক্টিক্যাল উদাহরণ

  2. নেস্টেড ভেরিয়েবল সাবস্টিটিউশন এবং বিল্ট-ইন BASH ভেরিয়েবল মাস্টার করুন লিনাক্সে – ফাইনাল গাইড

  3. ব্যাশ শেল ফাংশন মাস্টার করুন: ৬টি প্র্যাক্টিক্যাল উদাহরণ ও টিপস

  4. ব্যাশ স্ক্রিপ্টিং মাস্টার করুন: ৫টি রিয়েল-ওয়ার্ল্ড উদাহরণসহ প্র্যাক্টিক্যাল ইন্ট্রোডাকশন