শেল স্ক্রিপ্টিং-এ লিনাক্স ভেরিয়েবলগুলি বোঝা এবং লেখা - পার্ট 10
লিনাক্স শেল স্ক্রিপ্টিং ভাষা বরাবরই একটি আলোচ্য বিষয় হয়ে দাঁড়িয়েছে এবং সর্বদা ভবিষ্যতে থাকবে। শেল স্ক্রিপ্টিং ল্যাঙ্গুয়েজটি যাদু এবং এটি অন্য কোনও ভাষার মতো স্ক্রিপ্টিং ভাষায় কোনও প্রোগ্রাম করা এত সহজ। তবে, আমরা কী করছি এবং ফলাফল কী প্রত্যাশা করা হয়েছে তার একটি গভীরতর জ্ঞান প্রয়োজন।
আমাদের পাঠকদের জন্য আমরা যে সমস্ত শেল স্ক্রিপ্টিং নিবন্ধ লিখেছি সেগুলি শেষের একটি "লিনাক্স ভেরিয়েবলের একটি অন্তর্দৃষ্টি" সহ প্রশংসিত হয়। আমরা শেষ নিবন্ধটি একটি নতুন স্তরে প্রসারিত করছি।
পরিবর্তনশীল বৈশিষ্ট্য
লিনাক্স এনভায়রনমেন্টের প্রতিটি ভেরিয়েবলের কিছু নির্দিষ্ট বিকল্প থাকে এবং সেগুলিকে বলা হয় "বৈশিষ্ট্য"। "ডিক্লেয়ার" কমান্ড ব্যবহার করে পরিস্থিতি অনুযায়ী প্রয়োজন অনুযায়ী এই বিকল্পগুলি বা বৈশিষ্ট্যগুলিকে চালু এবং বন্ধ করা যাবে turned
ভেরিয়েবল অ্যাট্রিবিউটের একটি উদাহরণ বলতে চাইলে একটি স্যুইচ ব্যবহার করুন ‘ -i ’ যা সংশ্লিষ্ট ভেরিয়েবলের জন্য পূর্ণসংখ্যা বৈশিষ্ট্যটি চালু করবে। এমনকি যদি কোনও অ-সংখ্যাসূচক মান ‘ -i ‘ স্যুইচ করার জন্য পাস করা হয় তবে এটি কোনও ত্রুটি বার্তা এবং আউটপুট ‘ 0 ’ কে পূর্ণসংখ্যার ব্যাখ্যারূপে ফেলে দেয় না। এখানে এটি নীচের উদাহরণ থেকে আরও স্পষ্ট হয়ে ওঠে।
একটি পরিবর্তনশীল পূর্ণসংখ্যা, বিল = 121 ঘোষণা করুন
[email :~$ declare -i bill=121
ভেরিয়েবল বিলের মান মুদ্রণ করুন।
[email :~$ printf "%d\n" "$bill" 121
পরিবর্তনশীল মানটি একটি স্ট্রিং হতে দিন। পরিবর্তনশীল বিলটি ইতিমধ্যে ঘোষিত হয়েছে, দ্বিতীয়বার এটি ঘোষণার দরকার নেই। কেবল ভেরিয়েবলের মান পরিবর্তন করুন।
[email :~$ bill=tecmint
এখন আবার ভেরিয়েবল বিলের মান মুদ্রণ করুন।
[email :~$ printf "%d\n" "$bill" 0
ত্রুটি বার্তার জায়গায় ‘ 0 ’ লক্ষ্য করুন।
[email :~$ declare -p bill declare -i bill="121"
এখানে, একটি -p (মুদ্রণের জন্য দাঁড়িয়েছে) স্যুইচটি উদ্ধার করতে আসে।
একটি ভেরিয়েবলের বৈশিষ্ট্যগুলিকে বন্ধ স্যুইচ করার জন্য আমাদের যা যা প্রয়োজন তা হ'ল স্যুইচের ঠিক আগে + ( আরও ) চিহ্ন স্থাপন করা। এখানে এটি নীচের উদাহরণ থেকে আরও স্পষ্ট।
উপরের পরিবর্তনশীলটির জন্য পূর্ণসংখ্যা বৈশিষ্ট্য বন্ধ স্যুইচ করুন।
[email :~$ declare +i bill
ভেরিয়েবলের মান পরীক্ষা করে দেখুন।
[email :~$ printf "%d\n" "$bill" bash: printf: bill: invalid number 0
এখন সুইচ স্ট্রিং ব্যবহার করে ভেরিয়েবলের মান মুদ্রণ করুন।
[email :~$ printf "%s\n" "$bill" tecmint
এখানে উপরের উদাহরণে, বাশ অ-সংখ্যাসূচক মানটিকে ত্রুটি হিসাবে বিচার করতে পারেনি, তবে প্রিন্টফ ব্যাখ্যা করছেন, কোন সংখ্যাটি কী হতে পারে এবং কী হতে পারে না।
কেবল পঠনযোগ্য ভেরিয়েবলগুলি
আপনি কেবল পঠন মেমরি ( রম ) শুনে থাকতে পারেন তবে কেবল পঠনযোগ্য পরিবর্তনশীল কী? রমের সাথে এর কোনও মিল আছে কি?
কেবল পঠনযোগ্য কেবলমাত্র পঠনযোগ্য মেমরির মতো পরিবর্তনশীলগুলি এমন এক জিনিস যা এর অর্পণ হওয়ার পরে এর মান পরিবর্তন করা যায় না। সুতরাং এটিকে কেবল পঠনযোগ্য বলা হয়। আপনি এই পরিবর্তনশীলটির জন্য একটি নতুন মান লিখতে, সম্পাদনা করতে বা সংশোধন করতে পারবেন না। উদাহরণ ব্যবহার করে একটি চিত্র এখানে দেওয়া হয়েছে।
কেবলমাত্র একটি পঠনযোগ্য ( -r ) পরিবর্তনশীল নাম ঘোষণা করুন, যার মান হ'ল "linux-console.net"।
[email :~$ declare -r name="linux-console.net"
উপরের ঘোষিত ভেরিয়েবলের মান মুদ্রণ করুন।
[email :~$ printf "%s\n" "$name" linux-console.net
ভেরিয়েবলের মান পরিবর্তন করার চেষ্টা করুন।
[email :~$ declare -r name="Avishek" bash: declare: name: readonly variable
উপরে কেবল আলোচনার জন্য কেবল পঠনযোগ্য ভেরিয়েবলের বৈশিষ্ট্যগুলিকে ‘ + ’ চিহ্ন ব্যবহার করে পরিবর্তন করা যেতে পারে।
লিনাক্সে চলক রফতানি করা হচ্ছে
শেল স্ক্রিপ্টে ঘোষিত সমস্ত শেল ভেরিয়েবলগুলি স্ক্রিপ্টটি চলমান অবধি পাওয়া যায়। স্ক্রিপ্টের বাইরে স্ক্রিপ্ট থেকে পরিবর্তনশীল উপস্থিত নেই। স্ক্রিপ্টের বাইরে ভেরিয়েবলগুলি উপলব্ধ করার প্রক্রিয়াটিকে এক্সপোর্টিং ভেরিয়েবল বলা হয়।
একটি পরিবর্তনশীল শেলটির বাইরে স্যুইচ ডিক্লেয়ার-এক্স (এক্সপোর্ট) ব্যবহার করে রফতানি করা যায় যা শেলটি আপনি যেটি রফতানি করতে চেয়েছিলেন তা স্বীকার করে। একটি ঘোষিত রফতানি সুইচ হিসাবে ব্যবহার করা যেতে পারে।
[email :~$ declare -x variable=”Constant_Value”
স্ক্রিপ্ট চলাকালীন চলকটিতে করা সমস্ত পরিবর্তনগুলি যখন স্ক্রিপ্টের বাইরে চলকটি রফতানি হয় তখন হারিয়ে যায়। ভেরিয়েবল রফতানি করা শেল স্ক্রিপ্টিংয়ে অত্যন্ত গুরুত্বপূর্ণ।
আমরা একটি পরিবর্তনশীল রাখতে চাই যা কেবল পঠনযোগ্য এবং স্ক্রিপ্টের বাইরে থাকা উচিত, আমাদের একই সময়ে -r এবং -x স্যুইচ করা দরকার।
[email :~$ 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=linux-console.net printf "%s\n" "$name" exit 0
এখানে যা চলছে, একটি পরিবর্তনশীল (নাম) কেবলমাত্র পঠিত এবং রফতানি হিসাবে ঘোষণা করা হয় এবং তত্ক্ষণাত্ দ্বিতীয় স্ক্রিপ্টটি ডাকা হয়।
দ্বিতীয় স্ক্রিপ্ট সবে প্রথম স্ক্রিপ্ট থেকে ভেরিয়েবল মুদ্রিত হয়েছিল যা প্রথম প্রিন্টফ বিবৃতিতে রফতানি হয়েছিল। দ্বিতীয় প্রিন্টফের বিবৃতিতে এটি পরিবর্তনশীলকে < নাম র জন্য নির্ধারিত নতুন মান দেখায়।
কোনও ভেবে দেখার দরকার নেই যে ভেরিয়েবলটি কেবল পঠনযোগ্য ছিল, কীভাবে এটি পুনরায় নিয়োগ দেওয়া যেতে পারে। আপনি কি মনে রাখবেন না যে "স্ক্রিপ্ট চলাকালীন চলকটিতে করা সমস্ত পরিবর্তনগুলি যখন স্ক্রিপ্টের বাইরে চলকটি রফতানি করা হয় তখন হারিয়ে যায়” "
ঘোষণা কমান্ড নীচে সমস্ত স্যুইচগুলি তাদের সংমিশ্রণের পাশাপাশি অনুমতি দেয়।
- - একটি : একটি অ্যারে ঘোষণা করে
- -f : ফাংশন এবং সংজ্ঞা প্রদর্শন করুন
- - এফ : ফাংশনটির নাম প্রদর্শন করুন
- -r : কেবলমাত্র পঠনযোগ্য হিসাবে ভেরিয়েবল ঘোষণা করুন
- -x : পরিবর্তনশীল হিসাবে রফতানিযোগ্য হিসাবে ঘোষণা করুন
- - আমি : পূর্ণসংখ্যা হিসাবে পরিবর্তনশীল ঘোষণা করুন
এখন এ পর্যন্তই. পরের নিবন্ধে আমরা এই বিষয়টি বন্ধ করার আগে বাশে ইতিমধ্যে সংজ্ঞায়িত ‘ ইভাল ’ কমান্ড এবং ভেরিয়েবলগুলি পরিবর্তনের বিকল্পগুলি নিয়ে আলোচনা করব। আশা করি আপনি লোকেরা স্ক্রিপ্টিংয়ের গভীরতার দিকে আপনার ভ্রমণ উপভোগ করছেন। ততক্ষণ টিচমিন্ট ডটকমের সাথে সংযুক্ত থাকুন এবং সংযুক্ত থাকুন।