কম্পিউটার

লিনাক্স শেল স্ক্রিপ্টিং-এ অ্যারেগুলির সাথে কাজ করা - পার্ট 8

আমরা অ্যারের ধারণা ছাড়া একটি প্রোগ্রামিং ভাষা কল্পনা করতে পারি না। এটি বিভিন্ন ভাষার মধ্যে কীভাবে প্রয়োগ করা হয় তা বিবেচ্য নয়। পরিবর্তে অ্যারেগুলি আমাদেরকে একটি প্রতীকী নামের অধীনে একই রকম বা ভিন্ন ডেটা একত্রিত করতে সহায়তা করে।

লিনাক্স শেল স্ক্রিপ্টিং-এ অ্যারেগুলির সাথে কাজ করা - পার্ট 8

এখানে যেহেতু আমরা শেল স্ক্রিপ্টিং সম্পর্কে উদ্বিগ্ন, এই নিবন্ধটি আপনাকে কিছু শেল স্ক্রিপ্টের সাথে খেলতে সাহায্য করবে যা অ্যারেগুলির এই ধারণাটি ব্যবহার করে৷

অ্যারে ইনিশিয়ালাইজেশন এবং ব্যবহার

ব্যাশের নতুন সংস্করণের সাথে, এটি এক-মাত্রিক অ্যারে সমর্থন করে। declare দ্বারা একটি অ্যারে স্পষ্টভাবে ঘোষণা করা যেতে পারে শেল-বিল্টিন।

ডিক্লেয়ার -a var 

কিন্তু উপরের মত অ্যারে ভেরিয়েবল ঘোষণা করার প্রয়োজন নেই। আমরা নিম্নরূপ সরাসরি অ্যারেতে পৃথক উপাদান সন্নিবেশ করতে পারি।

var[XX]=

যেখানে 'XX' অ্যারে সূচক নির্দেশ করে। ডিরেফারেন্স অ্যারে উপাদানগুলি কোঁকড়া বন্ধনী সিনট্যাক্স ব্যবহার করে, যেমন

${var[XX]}

নোট৷ :অ্যারে ইন্ডেক্সিং সবসময় 0 দিয়ে শুরু হয়।

একটি সম্পূর্ণ অ্যারে শুরু করার আরেকটি সুবিধাজনক উপায় হল নিচের মত বন্ধনীর জোড়া ব্যবহার করা।

var=( element1 element2 element3 ... ... elementN )

অ্যারেতে মান নির্ধারণের আরেকটি উপায় আছে। আরম্ভ করার এই পদ্ধতিটি পূর্বে ব্যাখ্যা করা পদ্ধতির একটি উপ-শ্রেণী।

অ্যারে=( [XX]= [XX]= . . . )

আমরা read ব্যবহার করে এক্সিকিউশনের সময় অ্যারেতে মানগুলি পড়তে/বরাদ্দ করতে পারি শেল-বিল্টিন।

পড়ুন -একটি অ্যারে

এখন একটি স্ক্রিপ্টের ভিতরে উপরের বিবৃতিটি কার্যকর করার পরে, এটি কিছু ইনপুটের জন্য অপেক্ষা করে। আমাদেরকে স্থান দ্বারা পৃথক করা অ্যারে উপাদান সরবরাহ করতে হবে (এবং ক্যারেজ রিটার্ন নয়)। মান প্রবেশ করার পর শেষ করতে এন্টার টিপুন।

অ্যারে উপাদানগুলির মধ্য দিয়ে যেতে আমরা লুপের জন্যও ব্যবহার করতে পারি।

আমি “${array[@]}”-এর জন্য প্রতিটি উপাদানকে $i হিসেবে #অ্যাক্সেস করুন। . সম্পন্ন 

নিম্নলিখিত স্ক্রিপ্ট এই বিশেষ বিভাগের বিষয়বস্তু সংক্ষিপ্ত করে.

#!/bin/bash array1[0]=one array1[1]=1 echo ${array1[0]} echo ${array1[1]} array2=( one two three ) echo ${array2[0 ]} echo ${array2[2]} array3=( [9]=nine [11]=11 ) echo ${array3[9]} echo ${array3[11]} read -a array4 in i এর জন্য "${ array4[@]}" do echo $i সম্পন্ন প্রস্থান 0

অ্যারেতে বিভিন্ন অপারেশন

অনেক স্ট্যান্ডার্ড স্ট্রিং অপারেশন অ্যারেতে কাজ করে। নিম্নলিখিত নমুনা স্ক্রিপ্টটি দেখুন যা অ্যারেতে কিছু ক্রিয়াকলাপ প্রয়োগ করে (স্ট্রিং অপারেশন সহ)।

#!/bin/bash array=( apple bat cat dog elephant frog ) #print first element echo ${array[0]} echo ${array:0} #Display all element echo ${array[@]} প্রতিধ্বনি ${array[@]:0} #প্রথম একটি ইকো ${array[@]:1} ছাড়া সমস্ত উপাদান প্রদর্শন করুন echo ${#array[0]} echo ${#array} # উপাদানের সংখ্যা echo ${#array[*]} echo ${#array[@]} #replacing substring echo ${array[@]//a /A} প্রস্থান 0

উপরোক্ত স্ক্রিপ্ট চালানোর সময় উত্পাদিত আউটপুট নিচে দেওয়া হল।

আপেল আপেল আপেল ব্যাট বিড়াল কুকুর হাতি ব্যাঙ আপেল ব্যাট বিড়াল কুকুর হাতি ব্যাঙ ব্যাট বিড়াল কুকুর হাতি ব্যাঙ ব্যাট কুকুর কুকুর হাতি 5 5 6 6 Apple bAt cAt কুকুর elephAnt ব্যাঙ 

আমি মনে করি উপরের স্ক্রিপ্টটি বিশদভাবে ব্যাখ্যা করার কোন তাৎপর্য নেই কারণ এটি স্ব-ব্যাখ্যামূলক। প্রয়োজনে আমি এই সিরিজের একটি অংশ বিশেষভাবে স্ট্রিং ম্যানিপুলেশনের উপর উৎসর্গ করব।

অ্যারে সহ কমান্ড প্রতিস্থাপন

কমান্ড প্রতিস্থাপন একটি কমান্ডের আউটপুট বা একাধিক কমান্ড অন্য প্রসঙ্গে বরাদ্দ করে। এখানে অ্যারের এই প্রসঙ্গে আমরা অ্যারের পৃথক উপাদান হিসাবে কমান্ডের আউটপুট সন্নিবেশ করতে পারি। সিনট্যাক্স নিম্নরূপ।

অ্যারে=( $(কমান্ড) )

ডিফল্টরূপে সাদা স্থান দ্বারা পৃথক করা কমান্ডের আউটপুটে বিষয়বস্তু পৃথক উপাদান হিসাবে অ্যারেতে প্লাগ করা হয়। নিম্নলিখিত স্ক্রিপ্ট একটি ডিরেক্টরির বিষয়বস্তু তালিকাভুক্ত করে, যা 755টি অনুমতি সহ ফাইল।

#!/bin/bash ERR=27 EXT=0 যদি [ $# -ne 1 ]; তারপর প্রতিধ্বনি "ব্যবহার:$0 " $ERR ফাই থেকে প্রস্থান করুন যদি [ ! -d $1]; তারপর "${temp[@]}" do perm=$(ls -l $) এর জন্য "ডিরেক্টরি $1 বিদ্যমান নেই" ইকো $ERR fi temp=( $($1 -maxdepth 1 -type f) ) থেকে প্রস্থান করুন i) যদি [ `expr ${perm:0:10} :"-rwxr-xr-x"` -eq 10 ]; তারপর ইকো ${i##*/} fi সম্পন্ন প্রস্থান $EXT

টু-ডাইমেনশনাল অ্যারে সিমুলেট করা

আমরা একটি 1-মাত্রিক অ্যারে ব্যবহার করে সহজেই একটি 2-মাত্রিক ম্যাট্রিক্স উপস্থাপন করতে পারি। সারির প্রধান ক্রমে একটি ম্যাট্রিক্সের প্রতিটি সারিতে উপস্থাপনা উপাদানগুলি ক্রমান্বয়ে অ্যারে সূচীতে একটি অনুক্রমিক পদ্ধতিতে সংরক্ষণ করা হয়। একটি mXn ম্যাট্রিক্সের জন্য, একই ফর্মুলা হিসাবে লেখা যেতে পারে।

ম্যাট্রিক্স[i][j]=অ্যারে[n*i+j]

2টি ম্যাট্রিক্স যোগ করার এবং ফলাফলের ম্যাট্রিক্স মুদ্রণের জন্য অন্য একটি নমুনা স্ক্রিপ্ট দেখুন।

#!/bin/bash read -p "এন্টার দ্য ম্যাট্রিক্স অর্ডার [mxn] :" t m=${t:0:1} n=${t:2:1} প্রতিধ্বনি "প্রথম ম্যাট্রিক্সের জন্য উপাদানগুলি লিখুন " i এর জন্য `seq 0 $(($m-1))` `seq 0 $(($n-1))` তে j এর জন্য ডু x[$(($n*$i+$j)) ] সম্পন্ন হয়েছে প্রতিধ্বনি "সেকেন্ড ম্যাট্রিক্সের জন্য উপাদানগুলি লিখুন" i এর জন্য `seq 0 $(($m-1))` do j এর জন্য `seq 0 $(($n-1))` do read y[$ (($n*$i+$j))] z[$(($n*$i+$j))]=$((${x[$(($n*$i+$j))]}+ ${y[$(($n*$i+$j))]})) সম্পন্ন হয়েছে ইকো "সংযোজনের পরে ম্যাট্রিক্স হল" এর জন্য i এর জন্য `seq 0 $(($m-1))` do j এর জন্য ` seq 0 $(($n-1))` do echo -ne "${z[$(($n*$i+$j))]}\t" সম্পন্ন echo -e "\n" সম্পন্ন প্রস্থান 0  

যদিও শেল স্ক্রিপ্টিংয়ের ভিতরে অ্যারেগুলি বাস্তবায়নের জন্য সীমাবদ্ধতা রয়েছে, এটি মুষ্টিমেয় পরিস্থিতিতে কার্যকর হয়ে ওঠে, বিশেষত যখন আমরা কমান্ড প্রতিস্থাপনের সাথে পরিচালনা করি। প্রশাসনিক দৃষ্টিকোণ থেকে দেখলে, অ্যারের ধারণাটি GNU/Linux সিস্টেমে অনেক পটভূমি স্ক্রিপ্টের বিকাশের পথ তৈরি করে।


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

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

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

  4. 5টি ব্যবহারিক উদাহরণ সহ ব্যাশ স্ক্রিপ্টিং ভূমিকা টিউটোরিয়াল