কম্পিউটার

শেল স্ক্রিপ্টিং ল্যাঙ্গুয়েজে লিনাক্স "ভেরিয়েবল" এর অন্তর্দৃষ্টি - পার্ট 9

আমরা ইতিমধ্যেই লিনাক্স শেল স্ক্রিপ্টিং এর উপর একটি সিরিজ নিবন্ধ লিখেছি যা সেই সময় উষ্ণভাবে স্বাগত জানানো হয়েছিল এবং এটি এখনও অনেক প্রাসঙ্গিক ছিল। এখানে শেল স্ক্রিপ্টিংয়ের নিবন্ধগুলির সংগ্রহের লিঙ্ক রয়েছে৷

  1. লিনাক্স শেল স্ক্রিপ্টিং শিখুন

এখানে এই নিবন্ধে আমরা ভেরিয়েবল দেখতে পাব , এর নির্বাহ এবং শেল স্ক্রিপ্টে এর বাস্তবায়ন।

শেল স্ক্রিপ্টিং ল্যাঙ্গুয়েজে লিনাক্স  ভেরিয়েবল  এর অন্তর্দৃষ্টি - পার্ট 9

একটি আউটপুট সংরক্ষণ করা হচ্ছে

একটি কমান্ডের আউটপুট স্ট্যান্ডার্ড আউটপুট বা একটি ফাইলে পুনঃনির্দেশিত করা যেতে পারে এবং একটি ভেরিয়েবলেও সংরক্ষণ করা যেতে পারে। যদি একটি কমান্ডের আউটপুট যথেষ্ট বড় হয় যাতে এটি স্ক্রিনের সাথে মানানসই না হয় তবে আমাদের কাছে একটি ভেরিয়েবলে ফাইলে আউটপুট সংরক্ষণ করার বিকল্পটি বাকি থাকে। ভেরিয়েবলে আউটপুট সংরক্ষণ করার একটি সুবিধা হল দ্রুত পরীক্ষার গতি। ভেরিয়েবলগুলি মেমরিতে সংরক্ষণ করা হয় এবং তাই এটি ফাইল থেকে পুনরুদ্ধারের তুলনায় দ্রুত হতে থাকে।

স্ক্রিপ্টিং ভাষার ভেরিয়েবল

ভেরিয়েবল হল শেল স্ক্রিপ্টিং-এ ব্যবহৃত একটি গুরুত্বপূর্ণ উপাদান এবং ব্যাশ কমান্ড ব্যবহার করে ঘোষণা করা হয় “Declare ” একটি পরিবর্তনশীল ঘোষণা করতে 'স্তর বলুন ', আমাদের নিচের কমান্ডটি কার্যকর করতে হবে।

$ declare LEVEL

নোট৷ :আমাদের “টাইপকাস্ট ব্যবহার করতে হবে ”, কর্ন শেল সামঞ্জস্যের জন্য একটি বিল্ট ইন স্টেটমেন্ট। 'ডিক্লেয়ার' আরও উন্নত এবং এতে সমস্ত বৈশিষ্ট্য রয়েছে, তাই BASH ব্যবহার করার সময় সুপারিশ করা হয়৷

নিয়ম
  1. একটি ভেরিয়েবলের নাম অবশ্যই যুক্তিযুক্ত হতে হবে, স্ক্রিপ্টে ভেরিয়েবলের ব্যবহার।
  2. সমস্ত প্রোগ্রাম জুড়ে একই পরিবর্তনশীল নাম ব্যবহার করার জন্য দৃঢ়ভাবে পরামর্শ দেওয়া হয়।
  3. ভেরিয়েবলের নাম বড় হাতের এবং ছোট হাতেরও হতে পারে কিন্তু নিয়ম অনুসারে শেল কমান্ডগুলি ছোট হাতের অক্ষরে এবং তাই আমাদের ভেরিয়েবলের নাম বড় হাতের অক্ষরে ব্যবহার করা উচিত, যাতে কোনও বিভ্রান্তি দূর করা যায়। যেমন, TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT, ইত্যাদি।

বাস্তবায়ন

একটি ভেরিয়েবলকে একটি সমান চিহ্ন (=) ব্যবহার করে একটি মান নির্ধারণ করা যেতে পারে ) একটি ভেরিয়েবলে একটি খালি স্ট্রিং বরাদ্দ করতে আমাদের অবশ্যই সমান চিহ্নের পরে কোনও মান সরবরাহ করা উচিত নয়।

$ LEVEL =

পরিবর্তনশীল 'LEVEL'-এ সংরক্ষিত মান পরীক্ষা করুন।

$ printf "%i" $LEVEL

প্রিন্টফ , 'C এর বেশিরভাগ কমান্ড ' প্রোগ্রামাররা সচেতন, ডেটা প্রিন্ট করে।%i - পূর্ণসংখ্যার প্রতিনিধিত্ব করে। আমরা এটিকে %c দিয়ে প্রতিস্থাপন করতে পারি অক্ষরের জন্য বা %c স্ট্রিং এর জন্য, যেমন এবং যখন প্রয়োজন।

$লেভেল:‘$ নোট করুন ' যা 'LEVEL' ভেরিয়েবলের মান বিকল্প হিসেবে কাজ করে .

নমুনা আউটপুট
$ printf "%i" $LEVEL
0

ভেরিয়েবলে একটি মান বরাদ্দ করুন।

$ LEVEL=0

ভেরিয়েবলে সংরক্ষিত ডেটা পরীক্ষা করুন।

$ printf "%i" $LEVEL
0

নোট৷ :এটি লক্ষ্য করা আকর্ষণীয় যে উভয় ক্ষেত্রেই, যখন আমরা ভেরিয়েবলের মান নির্ধারণ করিনি এবং যখন আমরা '0 মান নির্ধারণ করি ' পরিবর্তনশীল 'লেভেল ' আউটপুট 0 . যদিও উভয় ক্ষেত্রেই আউটপুট একই কিন্তু শেল স্ক্রিপ্ট উভয় পরিবর্তনশীল ঘোষণাকে ভিন্নভাবে পরিচালনা করে।

ভেরিয়েবলে একটি নতুন মান বরাদ্দ করুন।

$ LEVEL=121

ভেরিয়েবলে সংরক্ষিত ডেটা পরীক্ষা করুন।

$ printf "%i" $LEVEL
121

একটি পরিবর্তনশীল আনসেট করুন

ঘোষণা করুন এটি একটি BASH কমান্ড এবং এটি শুধুমাত্র কার্যকর হলেই পরিবর্তনশীল তৈরি করে। স্ক্রিপ্ট বন্ধ না হওয়া বা ভেরিয়েবলটি ধ্বংস না হওয়া পর্যন্ত এইভাবে তৈরি ভেরিয়েবলটি মেমরিতে থাকে।

$ unset LEVEL

BASH-এ পূর্বনির্ধারিত ভেরিয়েবল

BASH-এর 50-এর বেশি ভেরিয়েবল পূর্বনির্ধারিত। এই ভেরিয়েবলগুলির মধ্যে কয়েকটির একটি বিশেষ অর্থ রয়েছে যা BASH-এর সাথে সংযুক্ত যেমন, একটি পরিবর্তনশীল RANDOM একটি র্যান্ডম সংখ্যা আউটপুট. যদি এটি আনসেট করা হয় এবং তারপর আবার সংজ্ঞায়িত করা হয়, তাহলে আসল পরিবর্তনশীল মান চিরতরে হারিয়ে যাবে। তাই কোনো সিস্টেম সংজ্ঞায়িত ভেরিয়েবল ব্যবহার না করার পরামর্শ দেওয়া হচ্ছে।

এখানে কিছু দরকারী BASH ভেরিয়েবলের একটি তালিকা রয়েছে৷

  1. BASH—ব্যাশের সম্পূর্ণ পাথনাম।
  2. BASH_ENV—একটি শেল স্ক্রিপ্টে, স্ক্রিপ্ট শুরু হওয়ার আগে এক্সিকিউট করা প্রোফাইল ফাইলের নাম।
  3. BASH_VERSION—ব্যাশের সংস্করণ (উদাহরণস্বরূপ, 2.04.0(1)-রিলিজ)।
  4. COLUMNS—আপনার ডিসপ্লেতে প্রতি লাইনে অক্ষরের সংখ্যা (উদাহরণস্বরূপ, 80)।
  5. HOSTNAME—কম্পিউটারের নাম। লিনাক্সের কিছু সংস্করণের অধীনে, এটি মেশিনের নাম হতে পারে। অন্যদের ক্ষেত্রে, এটি একটি সম্পূর্ণ যোগ্য ডোমেইন নাম হতে পারে।
  6. HOSTTYPE - কম্পিউটারের প্রকার।
  7. হোম—আপনার হোম ডিরেক্টরির নাম।
  8. OSTYPE—অপারেটিং সিস্টেমের নাম।
  9. PATH-চালানোর জন্য একটি কমান্ড খুঁজে পেতে অনুসন্ধান পাথগুলির কোলন-বিভাজিত তালিকা৷
  10. PPID—শেলের মূল প্রক্রিয়ার প্রক্রিয়া আইডি।
  11. PROMPT_COMMAND—PS1 প্রাথমিক প্রম্পট স্ট্রিং সেট করার আগে কার্যকর করার জন্য কমান্ড।
  12. PWD—বর্তমান কার্যকরী ডিরেক্টরি (সিডি কমান্ড দ্বারা সেট করা হয়েছে)।
  13. RANDOM—প্রতিবার উল্লেখ করা হলে 0 এবং 32767 এর মধ্যে একটি এলোমেলো সংখ্যা প্রদান করে।
  14. শেল- ব্যবহারের জন্য পছন্দের শেল; আপনার জন্য একটি শেল শুরু করা প্রোগ্রামগুলির জন্য৷
  15. TERM—টার্মিনাল এমুলেশন টাইপ (উদাহরণস্বরূপ, কনসোল)।

শব্দ বিভাজনের নিয়ম।

$ LEVEL=0
$ printf "%i" $LEVEL
0

AND

$ LEVEL=”0”
$ printf "%i" $LEVEL
0

উভয় ক্ষেত্রেই আউটপুট একই থাকে। তাহলে উদ্ধৃতি ব্যবহার করার সময় ফলাফলের পার্থক্য কী?

বিভিন্ন পরিবর্তনশীল ডেটা দিয়ে একই পরীক্ষা করা যাক।

$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
$ printf "%i" $LEVEL
0

উল্লেখ না, আউটপুট সঠিক নয়. BASH '0 এর পরে স্থান নিচ্ছে৷ ' সমাপ্তি হিসাবে এবং তাই ভেরিয়েবলের মান '0 হিসাবে সেট করা হয়েছে ' এখন আমরা নিচের মত ভেরিয়েবলের জন্য উদ্ধৃতি ব্যবহার করার চেষ্টা করি।

$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
$ printf "%s" $LEVEL 
0;1;2;3;4;5

তারপরও ফলাফল ঠিক হয়নি। BASH পরিবর্তনশীল মান নিয়েছে এবং তাদের মধ্যবর্তী সমস্ত স্পেস সরিয়ে দিয়েছে। তাই printf 0,1,2,3,4,5 কে স্বতন্ত্র মান হিসাবে ব্যাখ্যা করেনি। তাহলে সমাধান কি?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

হ্যাঁ! উদ্ধৃতি অধীনে পরিবর্তনশীল প্রতিস্থাপন করা সমাধান. উদ্ধৃতিগুলি শেলের মধ্যে অক্ষরগুলিকে গোষ্ঠীভুক্ত করে এবং বিশেষ অক্ষরগুলিকে একটি অর্থপূর্ণ উপায়ে ব্যাখ্যা করে৷

উদ্ধৃতিগুলি ব্যাক-টু-ব্যাক ব্যবহার করা যেতে পারে এবং উদ্ধৃতিগুলির সাথে পরিবর্তনশীল প্রতিস্থাপনগুলি আবদ্ধ করা একটি ভাল ধারণা। তাছাড়া এটি উদ্ধৃতি থেকে সামগ্রিক পাঠ্য আলাদা করতে ব্যবহার করা যেতে পারে। এখানে একটি উদাহরণ।

$ LEVEL=5 
$ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
$ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

উদ্ধৃত পাঠ্যের অংশগুলিকে স্থান দিয়ে আলাদা করার ফলে উপরে আলোচনা করা একই সমস্যা হবে। ব্যাশ সাদা স্থানটিকে সমাপ্তি হিসাবে বিবেচনা করবে। পরিবর্তনশীল প্রতিস্থাপনের আরেকটি উপায় হল।

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

একক উদ্ধৃতি বিশেষ অক্ষর মুদ্রণ থেকে BASH-কে সীমাবদ্ধ করে।

$ printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

ব্যাকস্ল্যাশ (/)

ব্যাকস্ল্যাশ একটি অক্ষরের জন্য একক উদ্ধৃতির মতো কাজ করে। আপনি কি ভেবেছেন কিভাবে আপনি প্রিন্ট করবেন ( )?

$ printf "%c" "\""

যখন %q printf দিয়ে গোষ্ঠীবদ্ধ , শব্দ ব্যবধান নিশ্চিত করতে প্রতিটি শব্দের পরে ব্যাকস্ল্যাশ প্রদান করে।

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

এখন এ পর্যন্তই. আমরা সর্বদা আমাদের পাঠকদের এমন নিবন্ধ সরবরাহ করার চেষ্টা করি যা তাদের জন্য প্রতিনিয়ত দরকারী। উপরের কভার করা নিবন্ধটি বিশাল তাই উদাহরণ সহ বাকি বিষয়গুলি পরবর্তী নিবন্ধে উত্পাদিত হবে যার মধ্যে থাকবে 'ভেরিয়েবলের বৈশিষ্ট্য', 'ভেরিয়েবল এক্সপোর্টিং' ইত্যাদি।

ততক্ষণ পর্যন্ত সাথে থাকুন এবং Tecmint.com-এর সাথে সংযুক্ত থাকুন . নীচের মন্তব্য বিভাগে আপনার মূল্যবান মতামত আমাদের প্রদান করতে ভুলবেন না।


  1. লিনাক্স BASH স্ক্রিপ্টিং-এর ওয়ার্ল্ডের মাধ্যমে যাত্রা – তৃতীয় অংশ

  2. লিনাক্স নতুন এবং প্রশাসকদের জন্য 4টি বিনামূল্যের শেল স্ক্রিপ্টিং ইবুক

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

  4. শেল স্ক্রিপ্টিং-এ 'লিনাক্স ভেরিয়েবল' বোঝা এবং লেখা - পার্ট 10