কম্পিউটার

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

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

ব্যাশ ভেরিয়েবলগুলি সেই তথ্যের জন্য অস্থায়ী সঞ্চয়স্থান সরবরাহ করে যা প্রোগ্রামের জীবদ্দশায় প্রয়োজন হবে৷

সিনট্যাক্স:

VARNAME=VALUE

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

শেল ভেরিয়েবলের ধরন সম্পর্কে চিন্তা করে না। ভেরিয়েবল স্ট্রিং, পূর্ণসংখ্যা বা বাস্তব সংখ্যা সংরক্ষণ করতে পারে।

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

নিম্নলিখিত স্ক্রিপ্টটি 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

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

Bash এ, ভেরিয়েবল ঘোষণা করতে হবে না। কিন্তু, যখন আপনি ভেরিয়েবলটি অ্যাক্সেস করেন যা এখন পর্যন্ত ব্যবহার করা হয়নি, আপনি কোন সতর্কতা বা ত্রুটি বার্তা পাবেন না। পরিবর্তে, এটি একটি ফাঁকা মান প্রদর্শন করবে।

<কেন্দ্র>

উদাহরণ 2. ব্যাশ ভেরিয়েবলে ফাঁকা মান

$ 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

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

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

একটি ইন্টারেক্টিভ শেলের একটি মান সহ একটি পরিবর্তনশীল বরাদ্দ করুন এবং আপনার শেল স্ক্রিপ্টে এটি অ্যাক্সেস করার চেষ্টা করুন৷

$ VAR2=LINUX

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

এখন, উপরের স্ক্রিপ্টটি নীচে দেখানো হিসাবে চালান।

$ ./var2.sh
VAR2=
VAR2=UNIX

তবুও আপনি ভেরিয়েবল VAR2 এর জন্য ফাঁকা মান পাবেন। শেল শুধুমাত্র বর্তমান শেলে LINUX-এর সাথে ভেরিয়েবল VAR2 সঞ্চয় করে। var2.sh কার্যকর করার সময়, এটি শেল তৈরি করে এবং এটি স্ক্রিপ্টটি কার্যকর করে। তাই ভেরিয়েবল VAR2-এর মান থাকবে না স্পন করা শেলে। অন্য প্রোগ্রাম দ্বারা উত্তরাধিকারসূত্রে প্রাপ্ত করার জন্য আপনাকে ভেরিয়েবলটি রপ্তানি করতে হবে - একটি শেল স্ক্রিপ্ট সহ, নীচে দেখানো হয়েছে৷

উদাহরণ 4. একটি ব্যাশ ভেরিয়েবল রপ্তানি করা

$ 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। কারণ ভেরিয়েবলগুলি আপনার ইন্টারেক্টিভ শেলে ফেরত পাঠানো হবে না, যদি না আপনি বর্তমান শেলে স্ক্রিপ্টটি কার্যকর না করেন।

একটি ব্যাশ ভেরিয়েবল ঘোষণা করা

bash-এ declare স্টেটমেন্ট ব্যবহার করে, আমরা ভেরিয়েবলের জন্য নির্ধারিত মান সীমিত করতে পারি। এটি ভেরিয়েবলের বৈশিষ্ট্যগুলিকে সীমাবদ্ধ করে। একটি ঘোষণার বিবৃতিতে বিকল্পটি একটি ভেরিয়েবলের ধরন নির্ধারণ করতে ব্যবহৃত হয়।

সিনট্যাক্স:

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

উদাহরণ 5. ডিক্লেয়ার ব্যবহার করে ব্যাশ ভেরিয়েবলের ঘোষণা

$ cat declar.sh
#!/bin/bash
declare -i intvar
intvar=123 # Assigning integer value.
echo $intvar
intvar=12.3 #Trying to store string type value to an integer variable
echo $intvar

declare -r rovar=281
rovar=212 # Trying to change the readonly variable.

নীচের এক্সিকিউশন থেকে, আপনি যখন একটি ভেরিয়েবলে অবৈধ ডেটা বরাদ্দ করেন তখন আপনি ত্রুটি বার্তাটি লক্ষ্য করতে পারেন৷

$ ./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 একটি কীওয়ার্ড যা স্থানীয় ভেরিয়েবল ঘোষণা করতে ব্যবহৃত হয়। একটি ফাংশনে, একটি স্থানীয় ভেরিয়েবলের অর্থ শুধুমাত্র সেই ফাংশন ব্লকের মধ্যেই থাকে।

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

$ 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 - একটি সীমাবদ্ধ ব্যাশ শেল ব্যবহারিক উদাহরণ সহ ব্যাখ্যা করা হয়েছে

  2. লিনাক্সে নেস্টেড ভেরিয়েবল সাবস্টিটিউশন এবং পূর্বনির্ধারিত BASH ভেরিয়েবল - পার্ট 11

  3. 6টি ব্যবহারিক উদাহরণ সহ ব্যাশ শেল ফাংশন টিউটোরিয়াল

  4. 5টি ব্যবহারিক উদাহরণ সহ ব্যাশ স্ক্রিপ্টিং ভূমিকা টিউটোরিয়াল