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


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

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

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

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

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

$ declare LEVEL

দ্রষ্টব্য: আমাদের "টাইপকাস্ট" ব্যবহার করতে হবে, এটি কর্ন শেল সামঞ্জস্যের জন্য বিল্ট ইন ইন স্টেটমেন্ট। ‘ডিক্লেয়ার’ আরও উন্নত এবং এতে সমস্ত বৈশিষ্ট্য রয়েছে, সুতরাং বাস ব্যবহার করার সময় এটির প্রস্তাব দেওয়া হয়।

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

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

$ LEVEL =

ভেরিয়েবল হিসাবে সংরক্ষণ করা মানটি পরীক্ষা করুন 'লেভেল' হিসাবে।

$ printf "%i" $LEVEL

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

V স্তর: ‘$’ নোট করুন যা ভেরিয়েবল ‘লেভেল’ এর মান বিকল্প হিসাবে কাজ করে।

$ printf "%i" $LEVEL
0

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

$ LEVEL=0

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

$ printf "%i" $LEVEL
0

দ্রষ্টব্য: এটি আকর্ষণীয় যে উভয় ক্ষেত্রেই আমরা যখন ভেরিয়েবলের জন্য মান নির্ধারণ করি নি এবং যখন আমরা '0' ভেরিয়েবলকে 'লেভেল' আউটপুটগুলিতে 0 অর্পণ করি। তবে উভয় ক্ষেত্রেই আউটপুট একই হয় তবে শেল স্ক্রিপ্ট দুটি ভেরিয়েবল ডিক্লেয়ারেশনকে আলাদাভাবে পরিচালনা করে।

চলকটিতে একটি নতুন মান নির্ধারণ করুন।

$ LEVEL=121

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

$ printf "%i" $LEVEL
121

ডিক্লেয়ার একটি বেস কমান্ড এবং এটি কার্যকর হলেই পরিবর্তনশীল তৈরি করে। স্ক্রিপ্ট বন্ধ না হওয়া বা ভেরিয়েবলটি ধ্বংস না হওয়া অবধি তৈরি হওয়া ভেরিয়েবল স্মৃতিতে রয়ে যায়।

$ unset LEVEL

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

এখানে কিছু কার্যকর BASH ভেরিয়েবলের একটি তালিকা রয়েছে।

  1. BASH Bash বাশের পুরো পথের নাম
  2. BASH_ENV a শেল স্ক্রিপ্টে, স্ক্রিপ্টটি শুরু হওয়ার আগে প্রোফাইল ফাইলটির নাম কার্যকর করা হয়েছিল
  3. BASH_VERSION Bash বাশের সংস্করণ (উদাহরণস্বরূপ, ২.০৪.০ (১) রিরিজ)
  4. কলামস — আপনার ডিসপ্লেতে প্রতি লাইন অক্ষরের সংখ্যা (উদাহরণস্বরূপ, 80)
  5. HOSTNAME computer কম্পিউটারের নাম। লিনাক্সের কয়েকটি সংস্করণে এটি মেশিনের নাম হতে পারে। অন্যদের জন্য, এটি একটি সম্পূর্ণ দক্ষ ডোমেন নাম হতে পারে
  6. হোস্টটিওয়াই computer কম্পিউটারের ধরণ
  7. হোম your আপনার হোম ডিরেক্টরিটির নাম
  8. OSTYPE the অপারেটিং সিস্টেমের নাম
  9. পাঠ — নির্বাহের জন্য একটি আদেশ সন্ধানের জন্য কোলন-বিচ্ছিন্ন অনুসন্ধানের পাথের তালিকা
  10. পিপিআইডি the শেলটির মূল প্রক্রিয়াটির আইডি
  11. PROMPT_COMMAND PS PS1 প্রাথমিক প্রম্পট স্ট্রিংয়ের সেটিংস স্থাপনের আগে কার্যকর করার আদেশ।
  12. পিডব্লিউডি — বর্তমান ওয়ার্কিং ডিরেক্টরি (সিডি কমান্ড দ্বারা নির্ধারিত)
  13. রu্যান্ডম each প্রতিবার রেফারেন্স করা হলে 0 এবং 32767 এর মধ্যে একটি এলোমেলো নম্বর দেয়
  14. শেল use ব্যবহারের জন্য পছন্দসই শেল; আপনার জন্য শেল শুরু করা প্রোগ্রামগুলির জন্য
  15. শর্ত — টার্মিনাল এমুলেশন টাইপ (উদাহরণস্বরূপ, কনসোল)

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

$ 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 পরিবর্তনশীল মান নিয়েছে এবং তাদের মধ্যে থাকা সমস্ত স্থান সরিয়ে ফেলে। সুতরাং প্রিন্টফ 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 প্রিন্টফের সাথে গোষ্ঠীভূত হয়, শব্দের ব্যবধান নিশ্চিত করার জন্য প্রতিটি শব্দের পরে ব্যাকস্ল্যাশ সরবরাহ করে।

$ LEVEL=5

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

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

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

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