শেল স্ক্রিপ্টিং ল্যাঙ্গুয়েজে ম্যাথমেটিক্যাল এক্সপ্রেশন গণনা করা - পার্ট ভি


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

  1. বুনিয়াদি লিনাক্স শেল স্ক্রিপ্টিং ভাষার টিপসটি বুঝুন - প্রথম অংশ
  2. শেল প্রোগ্রামিং শিখতে লিনাক্স নিউবিয়সের জন্য 5 শেল স্ক্রিপ্ট - দ্বিতীয় খণ্ড
  3. লিনাক্স বিএএসএএসএইচ ওয়ার্ডের স্ক্রিপ্টিংয়ের মাধ্যমে বিক্রয় - অংশ তৃতীয়
  4. লিনাক্স শেল প্রোগ্রামিংয়ের গাণিতিক দিক - অংশ IV

ফিবোনাচি সিরিজ দিয়ে শুরু করা যাক

সংখ্যার একটি প্যাটার্ন যেখানে প্রতিটি সংখ্যা দুটি পূর্ববর্তী সংখ্যার যোগফল। সিরিজটি 0, 1, 1, 2, 3, 5, 8 …… সংজ্ঞায়িতভাবে, ফিবনকাই ক্রমের প্রথম দুটি সংখ্যা 0 এবং 1 হয়।

#!/bin/bash
echo "How many numbers do you want of Fibonacci series ?" 
  read total 
  x=0 
  y=1 
  i=2 
  echo "Fibonacci Series up to $total terms :: " 
  echo "$x" 
  echo "$y" 
  while [ $i -lt $total ] 
  do 
      i=`expr $i + 1 ` 
      z=`expr $x + $y ` 
      echo "$z" 
      x=$y 
      y=$z 
  done
 chmod 755 Fibonacci.sh
 ./Fibonacci.sh

How many numbers do you want of Fibonacci series ? 
10 
Fibonacci Series up to 10 terms :: 
0 
1 
1 
2 
3 
5 
8 
13 
21 
34

আপনি কম্পিউটারটি কেবল বাইনারি ফরম্যাটেই বোঝেন এই বিষয়টি সম্পর্কে আপনি পরিচিত, অর্থাত্, '0' এবং '1' এবং আমাদের বেশিরভাগ ডেসিমালকে বাইনারি রূপান্তর শিখিয়ে উপভোগ করেছেন। এই জটিল অপারেশনের জন্য একটি সহজ স্ক্রিপ্ট লেখার বিষয়ে কীভাবে।

#!/bin/bash 

for ((i=32;i>=0;i--)); do 
        r=$(( 2**$i)) 
        Probablity+=( $r  ) 
done 

[[ $# -eq 0 ]] &echo -en "Decimal\t\tBinary\n" 
for input_int in [email ; do 
s=0 
test ${#input_int} -gt 11 &printf "%-10s\t" "$input_int" 

        for n in ${Probablity[@]}; do 

                if [[ $input_int -lt ${n} ]]; then 
                        [[ $s = 1 ]] && printf "%d" 0 
                else 
                        printf "%d" 1 ; s=1 
                        input_int=$(( $input_int - ${n} )) 
                fi 
        done 
echo -e 
done
 chmod 755 Decimal2Binary.sh
 ./Decimal2Binary.sh 1121

Decimal		Binary 
1121      	10001100001

দ্রষ্টব্য: উপরের স্ক্রিপ্টটি রান সময় ইনপুট গ্রহণ করে, যা সম্ভবত একটি সহায়তা।

আচ্ছা ইনবিল্ট ‘বিসি’ কমান্ড একক লাইনের স্ক্রিপ্টে দশমিককে বাইনারি রূপান্তর করতে পারে। আপনার টার্মিনালে চালান।

 echo "obase=2; NUM" | bc

‘দশম’ নাম্বার দিয়ে প্রতিস্থাপন করুন, যা আপনি দশমিক থেকে বাইনারি রূপান্তর করতে চান। উদাহরণ স্বরূপ,

 echo "obase=2; 121" | bc 

1111001

পরবর্তী আমরা একটি স্ক্রিপ্ট লিখব যা উপরের স্ক্রিপ্টের ঠিক বিপরীতে কাজ করবে, বাইনারি মানগুলিকে দশমিক রূপান্তর করবে।

#!/bin/bash 
echo "Enter a number :" 
read Binary 
if [ $Binary -eq 0 ] 
then 
echo "Enter a valid number " 
else 
while [ $Binary -ne 0 ] 
do 
Bnumber=$Binary 
Decimal=0 
power=1 
while [ $Binary -ne 0 ] 
do 
rem=$(expr $Binary % 10 ) 
Decimal=$((Decimal+(rem*power))) 
power=$((power*2)) 
Binary=$(expr $Binary / 10) 
done 
echo  " $Decimal" 
done 
fi
 chmod 755 Binary2Decimal.sh
 ./Binary2Decimal.sh

Enter a number : 
11 
3

দ্রষ্টব্য: উপরের ফাংশনটি ‘বিসি’ কমান্ডটি ব্যবহার করে টার্মিনালে সম্পাদন করা যেতে পারে।

 echo "ibase=2; BINARY" | bc

‘বাইনারি’ প্রতিস্থাপন করুন বাইনারি সংখ্যার সাথে, যেমন,,

 echo "ibase=2; 11010101" | bc 

213

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

 echo "obase=8; Decimal" | bc
 echo "obase=16; Decimal" | bc
 echo "ibase=8; Octal" | bc
 echo "ibase=16; Hexadecimal" | bc
 echo "ibase=2;obase=8 Binary" | bc

শেল স্ক্রিপ্টিং ভাষায় বর্ণনার সাথে ব্যবহৃত কয়েকটি সাধারণ সংখ্যার পরীক্ষাটি।

Test : INTEGER1 -eq INTEGER2
Meaning: INTEGER1 is equal to INTEGER2
Test : INTEGER1 -ge INTEGER2
Meaning: INTEGER1 is greater than or equal to INTEGER2
Test: INTEGER1 -gt INTEGER2
Meaning: INTEGER1 is greater than INTEGER2
Test:INTEGER1 -le INTEGER2
Meaning: INTEGER1 is less than or equal to INTEGER2
Test: INTEGER1 -lt INTEGER2
Meaning: INTEGER1 is less than INTEGER2
Test: INTEGER1 -ne INTEGER2
Meaning: INTEGER1 is not equal to INTEGER2

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

সুস্থ থাকুন, সাথে থাকুন এবং টেকমিন্টের সাথে সংযুক্ত থাকুন। খুব শীঘ্রই আমি আরও একটি আকর্ষণীয় বিষয় নিয়ে আসব, আপনি লোকেরা পড়তে পছন্দ করবেন। মন্তব্য বিভাগে আপনার মূল্যবান চিন্তাভাবনা ভাগ করুন।