একটি অ্যারে হল একটি পরিবর্তনশীল যাতে একাধিক মান একই ধরনের বা ভিন্ন ধরনের হতে পারে। একটি অ্যারের আকারের জন্য কোন সর্বোচ্চ সীমা নেই, বা সদস্য ভেরিয়েবলগুলিকে সূচীবদ্ধ বা সংলগ্নভাবে বরাদ্দ করার কোন প্রয়োজন নেই। অ্যারে সূচক শূন্য দিয়ে শুরু হয়।
এই নিবন্ধে, আসুন আমরা ব্যাশে 15টি বিভিন্ন অ্যারে অপারেশন পর্যালোচনা করি।
এই নিবন্ধটি চলমান ব্যাশ টিউটোরিয়াল সিরিজের অংশ। যারা ব্যাশ স্ক্রিপ্টিংয়ে নতুন তাদের জন্য ব্যাশ স্ক্রিপ্টিং পরিচিতি টিউটোরিয়াল থেকে একটি লাফ-স্টার্ট পান।
1. একটি অ্যারে ঘোষণা করা এবং মান বরাদ্দ করা
ব্যাশে, যখন একটি ভেরিয়েবল ফরম্যাটে ব্যবহার করা হয় তখন অ্যারে স্বয়ংক্রিয়ভাবে তৈরি হয়,
name[index]=value
- নাম একটি অ্যারের জন্য যেকোনো নাম
- সূচী এমন কোনো সংখ্যা বা অভিব্যক্তি হতে পারে যা শূন্যের চেয়ে বড় বা সমান একটি সংখ্যাকে মূল্যায়ন করতে হবে। আপনি declare -a arrayname ব্যবহার করে একটি স্পষ্ট অ্যারে ঘোষণা করতে পারেন।
$ cat arraymanip.sh #! /bin/bash Unix[0]='Debian' Unix[1]='Red hat' Unix[2]='Ubuntu' Unix[3]='Suse' echo ${Unix[1]} $./arraymanip.sh Red hat
অ্যারে থেকে একটি উপাদান অ্যাক্সেস করতে ${name[index]} এর মতো কোঁকড়া বন্ধনী ব্যবহার করুন।
2. ঘোষণার সময় একটি অ্যারে শুরু করা হচ্ছে
একটি অ্যারের প্রতিটি উপাদানকে আলাদাভাবে আরম্ভ করার পরিবর্তে, আপনি একটি কোঁকড়া ধনুর্বন্ধনীতে উপাদানগুলির তালিকা (সাদা স্থান দ্বারা পৃথক) নির্দিষ্ট করে একটি অ্যারে ঘোষণা এবং শুরু করতে পারেন৷
Syntax: declare -a arrayname=(element1 element2 element3)
যদি উপাদানগুলিতে সাদা স্থানের অক্ষর থাকে তবে এটিকে একটি উদ্ধৃতি দিয়ে আবদ্ধ করুন।
#! /bin/bash $cat arraymanip.sh declare -a Unix=('Debian' 'Red hat' 'Red hat' 'Suse' 'Fedora');
declare -a একটি অ্যারে ঘোষণা করে এবং বন্ধনীর সমস্ত উপাদান একটি অ্যারের উপাদান৷
<কেন্দ্র> কেন্দ্র>3. পুরো ব্যাশ অ্যারে প্রিন্ট করুন
অ্যারের সম্পূর্ণ উপাদান প্রিন্ট করার বিভিন্ন উপায় আছে। যদি সূচক নম্বর @ বা * হয়, তাহলে একটি অ্যারের সমস্ত সদস্যকে উল্লেখ করা হয়। ব্যাশে লুপিং স্টেটমেন্ট ব্যবহার করে আপনি অ্যারের উপাদানগুলির মধ্য দিয়ে যেতে পারেন এবং এটি মুদ্রণ করতে পারেন।
echo ${Unix[@]} # Add the above echo statement into the arraymanip.sh #./t.sh Debian Red hat Ubuntu Suse
একটি সূচক নম্বর প্রদান না করে একটি অ্যারের সদস্য ভেরিয়েবলের বিষয়বস্তু উল্লেখ করা প্রথম উপাদানের বিষয়বস্তু উল্লেখ করার মতোই, যেটি সূচক নম্বর শূন্য দিয়ে উল্লেখ করা হয়েছে।
4. ব্যাশ অ্যারের দৈর্ঘ্য
আমরা $# নামক বিশেষ প্যারামিটার ব্যবহার করে একটি অ্যারের দৈর্ঘ্য পেতে পারি।
${#arrayname[@]} আপনাকে অ্যারের দৈর্ঘ্য দেয়৷
৷$ cat arraymanip.sh declare -a Unix=('Debian' 'Red hat' 'Suse' 'Fedora'); echo ${#Unix[@]} #Number of elements in the array echo ${#Unix} #Number of characters in the first element of the array.i.e Debian $./arraymanip.sh 4 6
5. একটি অ্যারেতে nম উপাদানের দৈর্ঘ্য
${#arrayname[n]} একটি অ্যারের মধ্যে nম উপাদানের দৈর্ঘ্য দিতে হবে।
$cat arraymanip.sh #! /bin/bash Unix[0]='Debian' Unix[1]='Red hat' Unix[2]='Ubuntu' Unix[3]='Suse' echo ${#Unix[3]} # length of the element located at index 3 i.e Suse $./arraymanip.sh 4
6. একটি অ্যারের জন্য অফসেট এবং দৈর্ঘ্য দ্বারা নিষ্কাশন
নিম্নলিখিত উদাহরণটি ইউনিক্স নামক একটি অ্যারে থেকে অবস্থান 3 থেকে শুরু করে 2টি উপাদান বের করার উপায় দেখায়৷
$cat arraymanip.sh Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); echo ${Unix[@]:3:2} $./arraymanip.sh Suse Fedora
উপরের উদাহরণটি 3য় সূচক এবং চতুর্থ সূচকের উপাদানগুলি প্রদান করে। সূচক সবসময় শূন্য দিয়ে শুরু হয়।
7. অফসেট এবং দৈর্ঘ্য সহ নিষ্কাশন, একটি অ্যারের একটি নির্দিষ্ট উপাদানের জন্য
একটি অ্যারে উপাদান থেকে শুধুমাত্র প্রথম চারটি উপাদান বের করতে। উদাহরণস্বরূপ, উবুন্টু যা একটি অ্যারের দ্বিতীয় সূচকে অবস্থিত, আপনি একটি অ্যারের একটি নির্দিষ্ট উপাদানের জন্য অফসেট এবং দৈর্ঘ্য ব্যবহার করতে পারেন।
$cat arraymanip.sh #! /bin/bash Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); echo ${Unix[2]:0:4} ./arraymanip.sh Ubun
উপরের উদাহরণটি একটি অ্যারের ২য় সূচীকৃত উপাদান থেকে প্রথম চারটি অক্ষর বের করে।
8. একটি অ্যারে উপাদানে অনুসন্ধান এবং প্রতিস্থাপন করুন
নিম্নলিখিত উদাহরণ, একটি অ্যারের উপাদানগুলিতে উবুন্টু অনুসন্ধান করে এবং এটিকে 'SCO Unix' শব্দ দিয়ে প্রতিস্থাপন করে।
$cat arraymanip.sh #!/bin/bash Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); echo ${Unix[@]/Ubuntu/SCO Unix} $./arraymanip.sh Debian Red hat SCO Unix Suse Fedora UTS OpenLinux
এই উদাহরণে, এটি 2য় সূচক 'উবুন্টু'-এর উপাদানটিকে 'SCO ইউনিক্স' দিয়ে প্রতিস্থাপন করে। কিন্তু এই উদাহরণ স্থায়ীভাবে অ্যারের বিষয়বস্তু প্রতিস্থাপন করবে না৷
৷9. একটি বিদ্যমান ব্যাশ অ্যারেতে একটি উপাদান যোগ করুন
নিম্নলিখিত উদাহরণটি বিদ্যমান অ্যারেতে একটি উপাদান যুক্ত করার উপায় দেখায়৷
৷$cat arraymanip.sh Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); Unix=("${Unix[@]}" "AIX" "HP-UX") echo ${Unix[7]} $./arraymanip.sh AIX
ইউনিক্স নামক অ্যারেতে, উপাদান 'AIX' এবং 'HP-UX' যথাক্রমে 7ম এবং 8ম সূচকে যোগ করা হয়েছে।
10. একটি অ্যারে থেকে একটি উপাদান সরান
একটি অ্যারে থেকে একটি উপাদান সরাতে unset ব্যবহার করা হয়। unset একটি উপাদানকে নাল অ্যাসাইন করার মতো একই প্রভাব ফেলবে।
$cat arraymanip.sh #!/bin/bash Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); unset Unix[3] echo ${Unix[3]}
উপরের স্ক্রিপ্টটি কেবল নাল প্রিন্ট করবে যা 3য় সূচকে উপলব্ধ মান। নিম্নলিখিত উদাহরণটি একটি অ্যারে থেকে সম্পূর্ণরূপে একটি উপাদান অপসারণের একটি উপায় দেখায়৷
৷$ cat arraymanip.sh Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); pos=3 Unix=(${Unix[@]:0:$pos} ${Unix[@]:$(($pos + 1))}) echo ${Unix[@]} $./arraymanip.sh Debian Red hat Ubuntu Fedora UTS OpenLinux
এই উদাহরণে, ${Unix[@]:0:$pos} আপনাকে 0ম সূচক থেকে শুরু করে 3টি উপাদান দেবে যেমন 0,1,2 এবং ${Unix[@]:4} চতুর্থ সূচক থেকে উপাদানগুলি দেবে শেষ সূচক। এবং উপরের উভয় আউটপুট মার্জ করুন। এটি একটি অ্যারে থেকে একটি উপাদান অপসারণ করার জন্য একটি সমাধান৷
৷11. প্যাটার্ন ব্যবহার করে ব্যাশ অ্যারে উপাদানগুলি সরান
সার্চ কন্ডিশনে আপনি প্যাটার্ন দিতে পারেন এবং বাকি উপাদানটিকে নিচের মতো অন্য অ্যারেতে সঞ্চয় করতে পারেন।
$ cat arraymanip.sh #!/bin/bash declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora'); declare -a patter=( ${Unix[@]/Red*/} ) echo ${patter[@]} $ ./arraymanip.sh Debian Ubuntu Suse Fedora
উপরের উদাহরণটি সেই উপাদানগুলিকে সরিয়ে দেয় যার প্যাটার রেড* আছে।
12. একটি অ্যারে অনুলিপি করা হচ্ছে
অ্যারের উপাদানগুলি প্রসারিত করুন এবং নীচে দেখানো হিসাবে একটি নতুন অ্যারেতে সংরক্ষণ করুন৷
#!/bin/bash Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); Linux=("${Unix[@]}") echo ${Linux[@]} $ ./arraymanip.sh Debian Red hat Ubuntu Fedora UTS OpenLinux
13. দুটি ব্যাশ অ্যারে
এর সংমিশ্রণদুটি অ্যারের উপাদানগুলি প্রসারিত করুন এবং এটিকে নতুন অ্যারেতে বরাদ্দ করুন৷
৷$cat arraymanip.sh #!/bin/bash Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); Shell=('bash' 'csh' 'jsh' 'rsh' 'ksh' 'rc' 'tcsh'); UnixShell=("${Unix[@]}" "${Shell[@]}") echo ${UnixShell[@]} echo ${#UnixShell[@]} $ ./arraymanip.sh Debian Red hat Ubuntu Suse Fedora UTS OpenLinux bash csh jsh rsh ksh rc tcsh 14
এটি অ্যারেটি প্রিন্ট করে যাতে অ্যারের 'Unix' এবং 'Shell' উভয়ের উপাদান রয়েছে এবং নতুন অ্যারের উপাদানের সংখ্যা 14।
14. একটি সম্পূর্ণ অ্যারে মুছে ফেলা হচ্ছে
একটি সম্পূর্ণ অ্যারে মুছে ফেলার জন্য unset ব্যবহার করা হয়৷
$cat arraymanip.sh #!/bin/bash Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); Shell=('bash' 'csh' 'jsh' 'rsh' 'ksh' 'rc' 'tcsh'); UnixShell=("${Unix[@]}" "${Shell[@]}") unset UnixShell echo ${#UnixShell[@]} $ ./arraymanip.sh 0
একটি অ্যারে আনসেট করার পরে, উপরে দেখানো হিসাবে এর দৈর্ঘ্য শূন্য হবে।
15. একটি ফাইলের বিষয়বস্তু একটি অ্যারেতে লোড করুন
আপনি একটি অ্যারেতে লাইন দ্বারা ফাইল লাইনের বিষয়বস্তু লোড করতে পারেন।
#Example file $ cat logfile Welcome to thegeekstuff Linux Unix $ cat loadcontent.sh #!/bin/bash filecontent=( `cat "logfile" `) for t in "${filecontent[@]}" do echo $t done echo "Read file content!" $ ./loadcontent.sh Welcome to thegeekstuff Linux Unix Read file content!
উপরের উদাহরণে, একটি অ্যারের উপাদানের প্রতিটি সূচক লুপের জন্য প্রিন্ট করা হয়েছে।
প্রস্তাবিত পড়া
Bash 101 হ্যাকস, রমেশ নটরাজন দ্বারা . আমি আমার বেশিরভাগ সময় লিনাক্স পরিবেশে ব্যয় করি। সুতরাং, স্বাভাবিকভাবেই আমি ব্যাশ কমান্ড লাইন এবং শেল স্ক্রিপ্টিংয়ের একটি বিশাল ভক্ত। 15 বছর আগে, যখন আমি *nix-এর বিভিন্ন ফ্লেভারে কাজ করতাম, তখন আমি C shell এবং Korn shell-এ প্রচুর কোড লিখতাম। পরবর্তী বছরগুলিতে, যখন আমি সিস্টেম প্রশাসক হিসাবে লিনাক্সে কাজ শুরু করি, তখন আমি ব্যাশ শেল স্ক্রিপ্টিং ব্যবহার করে সম্ভাব্য প্রতিটি কাজ স্বয়ংক্রিয় করেছিলাম। আমার ব্যাশ অভিজ্ঞতার উপর ভিত্তি করে, আমি ব্যাশ 101 হ্যাকস ইবুক লিখেছি যাতে ব্যাশ কমান্ড লাইন এবং শেল স্ক্রিপ্টিং উভয় ক্ষেত্রেই 101টি ব্যবহারিক উদাহরণ রয়েছে। আপনি যদি ব্যাশকে আয়ত্ত করার কথা ভাবছেন, তাহলে নিজের উপকার করুন এবং এই বইটি পড়ুন, যা আপনাকে আপনার ব্যাশ কমান্ড লাইন এবং শেল স্ক্রিপ্টিংয়ের নিয়ন্ত্রণ নিতে সাহায্য করবে৷