লিনাক্স শেল স্ক্রিপ্টিং ভাষা সবসময় একটি আলোচিত বিষয় এবং ভবিষ্যতে সবসময় থাকবে। শেল স্ক্রিপ্টিং ল্যাঙ্গুয়েজ জাদুকরী এবং অন্য যেকোন ভাষার মতো স্ক্রিপ্টিং ল্যাঙ্গুয়েজে প্রোগ্রাম করা খুব সহজ। যাইহোক, এর জন্য আমরা কী করছি এবং কী ফলাফল প্রত্যাশিত তা সম্পর্কে গভীর জ্ঞানের প্রয়োজন৷
আমাদের পাঠকদের জন্য আমরা যে সমস্ত শেল স্ক্রিপ্টিং নিবন্ধগুলি লিখেছি সেগুলি শেষের একটি "এন ইনসাইট অফ লিনাক্স ভেরিয়েবল" সহ অত্যন্ত প্রশংসিত। আমরা শেষ নিবন্ধটিকে একটি নতুন স্তরে প্রসারিত করছি৷
ভেরিয়েবল অ্যাট্রিবিউটস
লিনাক্স এনভায়রনমেন্টের প্রতিটি ভেরিয়েবলের নির্দিষ্ট কিছু অপশন থাকে এবং সেগুলিকে বলা হয় 'অ্যাট্রিবিউটস'। এই বিকল্পগুলি বা বৈশিষ্ট্যগুলি চালু করা যেতে পারে৷ এবং বন্ধ , যখন প্রয়োজন হয় পরিস্থিতি অনুযায়ী একটি কমান্ড ব্যবহার করে “declare”।
পরিবর্তনশীল বৈশিষ্ট্যের একটি উদাহরণ হল একটি সুইচ ব্যবহার করে বলুন '-i ' যা সংশ্লিষ্ট ভেরিয়েবলের জন্য ইন্টিজার অ্যাট্রিবিউট চালু করবে। এমনকি ‘-i স্যুইচ করতে একটি অ-সংখ্যাসূচক মান পাস করা হলেও ' এটি একটি ত্রুটি বার্তা এবং আউটপুট নিক্ষেপ করবে না '0 ' পূর্ণসংখ্যা ব্যাখ্যা হিসাবে। এখানে নীচের উদাহরণ থেকে এটি আরও স্পষ্ট হয়ে ওঠে।
একটি পরিবর্তনশীল পূর্ণসংখ্যা ঘোষণা করুন, বিল =121
[email protected]:~$ declare -i bill=121
পরিবর্তনশীল বিলের মান প্রিন্ট করুন।
[email protected]:~$ printf "%d\n" "$bill" 121
চলক মান একটি স্ট্রিং হতে দিন. পরিবর্তনশীল বিল ইতিমধ্যে ঘোষণা করা হয়েছে, এটি দ্বিতীয়বার ঘোষণা করার প্রয়োজন নেই। শুধু ভেরিয়েবলের মান পরিবর্তন করুন।
[email protected]:~$ bill=tecmint
এখন, আবার পরিবর্তনশীল বিলের মান প্রিন্ট করুন।
[email protected]:~$ printf "%d\n" "$bill" 0
'0 লক্ষ্য করুন ' ত্রুটি বার্তার জায়গায়৷
৷এখন, প্রশ্ন হল, ইতিমধ্যে ঘোষিত ভেরিয়েবলের বৈশিষ্ট্যগুলি কীভাবে জানবেন?
[email protected]:~$ declare -p bill declare -i bill="121"
এখানে, একটি -p (মুদ্রণের জন্য দাঁড়ায়) সুইচ উদ্ধার করতে আসে।
আবার, একটি ভেরিয়েবলের বৈশিষ্ট্যগুলি বন্ধ করতে আমার কী করা উচিত?
সুইচ বন্ধ করার জন্য একটি ভেরিয়েবলের বৈশিষ্ট্য যা আমাদের প্রয়োজন তা হল একটি + বসানো (প্লাস ) সুইচের ঠিক আগে সাইন ইন করুন। এখানে নীচের উদাহরণ থেকে এটি আরও স্পষ্ট।
সুইচ বন্ধ করুন উপরের ভেরিয়েবলের জন্য পূর্ণসংখ্যা বৈশিষ্ট্য।
[email protected]:~$ declare +i bill
ভেরিয়েবলের মান পরীক্ষা করুন।
[email protected]:~$ printf "%d\n" "$bill" bash: printf: bill: invalid number 0
এখন সুইচ স্ট্রিং ব্যবহার করে ভেরিয়েবলের মান প্রিন্ট করুন।
[email protected]:~$ printf "%s\n" "$bill" tecmint
এখানে উপরের উদাহরণে, bash অ-সংখ্যাসূচক মানকে ত্রুটি হিসাবে বিচার করতে পারেনি, তবে printf ব্যাখ্যা করছে, কোন সংখ্যা হতে পারে এবং কোনটি হতে পারে না৷
৷শুধুমাত্র পঠনযোগ্য ভেরিয়েবল
আপনি হয়তো রিড অনলি মেমরি (ROM) শুনেছেন ), কিন্তু শুধুমাত্র পঠন পরিবর্তনশীল কি? রমের সাথে এর কোন মিল আছে?
ওয়েল রিড-ওনলি ভেরিয়েবল যেমন রিড-অনলি মেমরি এমন কিছু যার মান একবার বরাদ্দ করা হলে পরিবর্তন করা যায় না। তাই একে পঠনযোগ্য বলা হয়। আপনি সেই ভেরিয়েবলের জন্য একটি নতুন মান লিখতে, সম্পাদনা করতে বা পরিবর্তন করতে পারবেন না। এখানে উদাহরণ ব্যবহার করে একটি চিত্র দেওয়া হল৷
৷শুধুমাত্র পঠনযোগ্য ঘোষণা করুন (-r ) পরিবর্তনশীল নাম, যার মান হল “Tecmint.com”।
[email protected]:~$ declare -r name="Tecmint.com"
উপরে ঘোষিত ভেরিয়েবলের মান প্রিন্ট করুন।
[email protected]:~$ printf "%s\n" "$name" Tecmint.com
ভেরিয়েবলের মান পরিবর্তন করার চেষ্টা করুন।
[email protected]:~$ declare -r name="Avishek" bash: declare: name: readonly variable
উপরে আলোচনা করা হয়েছে '+ ব্যবহার করে একটি পঠনযোগ্য ভেরিয়েবলের বৈশিষ্ট্যগুলি পরিবর্তন করা যেতে পারে ' চিহ্ন৷
৷লিনাক্সে ভেরিয়েবল রপ্তানি করা হচ্ছে
একটি শেল স্ক্রিপ্টে ঘোষিত সমস্ত শেল ভেরিয়েবল স্ক্রিপ্টটি চালু না হওয়া পর্যন্ত উপলব্ধ। স্ক্রিপ্টের বাইরে স্ক্রিপ্ট থেকে পরিবর্তনশীল বিদ্যমান নেই। স্ক্রিপ্টের বাইরে ভেরিয়েবল উপলব্ধ করার প্রক্রিয়াকে বলা হয় এক্সপোর্টিং ভেরিয়েবল।
declare -x সুইচ ব্যবহার করে একটি ভেরিয়েবল শেলের বাইরে রপ্তানি করা যেতে পারে (রপ্তানি), যা শেল স্বীকার করে যে আপনি কি রপ্তানি করতে চান। একটি ঘোষণা রপ্তানি সুইচ হিসাবে ব্যবহার করা যেতে পারে।
[email protected]:~$ declare -x variable=”Constant_Value”
স্ক্রিপ্ট চলাকালীন ভেরিয়েবলে করা সমস্ত পরিবর্তন, স্ক্রিপ্টের বাইরে ভেরিয়েবল এক্সপোর্ট করা হলে হারিয়ে যায়। শেল স্ক্রিপ্টিং-এ পরিবর্তনশীল রপ্তানি খুবই গুরুত্বপূর্ণ।
আমরা একটি ভেরিয়েবল রাখতে চাই যা শুধুমাত্র পঠনযোগ্য এবং স্ক্রিপ্টের বাইরে উপলব্ধ, আমাদের সুইচ -r ব্যবহার করতে হবে এবং -x সুইচ করুন একই সময়ে।
[email protected]:~$ declare -rx variable=”Constant_Value”
পরিবেশ ভেরিয়েবল
যে ভেরিয়েবলগুলি প্রোগ্রাম এবং প্রোগ্রামের মধ্যে ভাগ করা হয় যা তাদের কার্যকর করে। এনভায়রনমেন্ট ভেরিয়েবল রপ্তানি করা যেতে পারে কিন্তু অ্যাট্রিবিউট অ্যাসাইন করা যাবে না।
উপরোক্ত তত্ত্বটি ব্যবহারিকভাবে বোঝা। এখানে আমাদের দুটি স্ক্রিপ্ট আছে 0.sh এবং 1.sh .
# 0.sh #!/bin/bash declare -rx name=Tecmint bash 0.sh exit 0
এবং দ্বিতীয় স্ক্রিপ্ট হল।
# 1.sh #!/bin/bash printf "%s\n" "$name" name=Tecmint.com printf "%s\n" "$name" exit 0
এখানে যা চলছে, তা হল একটি পরিবর্তনশীল (নাম) শুধুমাত্র পঠিত হিসাবে ঘোষণা করা হয় এবং রপ্তানি করা হয় এবং তার পরপরই দ্বিতীয় স্ক্রিপ্ট বলা হয়।
দ্বিতীয় স্ক্রিপ্টটি প্রথম স্ক্রিপ্ট থেকে ভেরিয়েবলটি প্রিন্ট করেছে যা প্রথম printf এ রপ্তানি করা হয়েছিল বিবৃতি দ্বিতীয় printf স্টেটমেন্টে এটি 'name ভেরিয়েবলের জন্য নির্ধারিত নতুন মান দেখায় '।
চিন্তা করার দরকার নেই, ভেরিয়েবলটি শুধুমাত্র পঠনযোগ্য ছিল, কিভাবে এটি পুনরায় বরাদ্দ করা যেতে পারে। আপনি কি মনে রাখবেন না যে "স্ক্রিপ্টটি চলাকালীন ভেরিয়েবলে করা সমস্ত পরিবর্তনগুলি স্ক্রিপ্টের বাইরে রপ্তানি করা হলে তা হারিয়ে যায়।"
রেফারেন্স
ঘোষণা কমান্ড তাদের সংমিশ্রণ সহ নীচের সমস্ত সুইচকে অনুমতি দেয়।
- -a :একটি অ্যারে ঘোষণা করে৷
- -f :প্রদর্শন ফাংশন এবং সংজ্ঞা।
- -F :ডিসপ্লে ফাংশনের নাম।
- -r :পরিবর্তনশীলকে শুধুমাত্র-পঠন হিসেবে ঘোষণা করুন।
- -x :ভেরিয়েবলকে রপ্তানিযোগ্য হিসাবে ঘোষণা করুন।
- -আমি :পরিবর্তনশীলকে পূর্ণসংখ্যা হিসাবে ঘোষণা করুন।
এখন এ পর্যন্তই. পরের প্রবন্ধে আমরা ‘eval ব্যবহার করে ভেরিয়েবল প্রতিস্থাপনের উপায় নিয়ে আলোচনা করব। ' কমান্ড এবং ভেরিয়েবলগুলি এই বিষয় বন্ধ করার আগে bash-এ সংজ্ঞায়িত করা হয়েছে। আশা করি আপনি স্ক্রিপ্টিংয়ের গভীরতায় আপনার যাত্রা উপভোগ করছেন। ততক্ষণ পর্যন্ত সাথে থাকুন এবং Tecmint.com-এর সাথে সংযুক্ত থাকুন .