কম্পিউটার টিউটোরিয়াল

শেল স্ক্রিপ্টে জটিল গাণিতিক অপারেশন মাস্টার করুন – পার্ট V

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

  1. বেসিক লিনাক্স শেল স্ক্রিপ্টিং ল্যাঙ্গুয়েজ টিপস বোঝা – পার্ট I
  2. লিনাক্স নতুনদের শেল প্রোগ্রামিং শেখাতে ৫টি শেল স্ক্রিপ্ট – পার্ট II
  3. লিনাক্স BASH স্ক্রিপ্টিংর জগতে সৈলিং – পার্ট III
  4. লিনাক্স শেল প্রোগ্রামিংর গাণিতিক দিক – পার্ট IV

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

একটি সংখ্যা প্যাট্রন যেখানে প্রতিটি সংখ্যা তার আগের দুটি সংখ্যার যোগফল। সিরিজটি হল ০, ১, ১, ২, ৩, ৫, ৮...। সংজ্ঞা অনুযায়ী, ফিবোনাচ্চি সিকোয়েন্সের প্রথম দুটি সংখ্যা হল ০ এবং ১।

স্ক্রিপ্ট ১: Fibonacci.sh

#!/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

নমুনা আউটপুট

[admin@wsxdn.com ~]# chmod 755 Fibonacci.sh
[admin@wsxdn.com ~]# ./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

Fibonacci.sh ডাউনলোড করুন

আপনি এই Факт জানেন যে কম্পিউটার শুধু বাইনারি ফরম্যাটে বুঝে, অর্থাৎ '০' এবং '১' এবং আমাদের অধিকাংশের ডেসিমাল থেকে বাইনারি কনভারশন শিখতে পছন্দ ছিল। এই জটিল অপারেশনের জন্য একটি সিম্পল স্ক্রিপ্ট লেখা কেমন লাগে?

স্ক্রিপ্ট ২: Decimal2Binary.sh

#!/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 admin@wsxdn.com; 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

নমুনা আউটপুট

[admin@wsxdn.com ~]# chmod 755 Decimal2Binary.sh
[admin@wsxdn.com ~]# ./Decimal2Binary.sh 1121
Decimal Binary
1121 10001100001

নোট: উপরের স্ক্রিপ্টটি রান টাইমে ইনপুট নেয়, যা স্পষ্টই একটি সাহায্য।

Decimal2Binary.sh ডাউনলোড করুন

বিল্ট-ইন 'bc' কমান্ড একটি ডেসিমাল-কে বাইনারি-তে একটি সিংগেল লাইন স্ক্রিপ্টে কনভার্ট করতে পারে। আপনার টার্মিনালে রান করুন।

[admin@wsxdn.com ~]# echo "obase=2; NUM" | bc

'NUM'-কে সেই সংখ্যা দিয়ে প্রতিস্থাপন করুন যা আপনি ডেসিমাল থেকে বাইনারি-এ কনভার্ট করতে চান। উদাহরণস্বরূপ,

[admin@wsxdn.com ~]# echo "obase=2; 121" | bc
1111001

এরপর আমরা একটি স্ক্রিপ্ট লিখব যা উপরের স্ক্রিপ্টের ঠিক বিপরীত কাজ করে, বাইনারি মান-কে ডেসিমাল-এ কনভার্ট করে।

স্ক্রিপ্ট ৩: Binary2Decimal.sh

#!/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

নমুনা আউটপুট

[admin@wsxdn.com ~]# chmod 755 Binary2Decimal.sh
[admin@wsxdn.com ~]# ./Binary2Decimal.sh
Enter a number : 11
3

নোট: উপরের ফাংশনটি টার্মিনালে 'bc' কমান্ড ব্যবহার করেও করা যায়।

[admin@wsxdn.com ~]# echo "ibase=2; BINARY" | bc

'BINARY'-কে বাইনারি নম্বর দিয়ে প্রতিস্থাপন করুন, যেনঃ

[admin@wsxdn.com ~]# echo "ibase=2; 11010101" | bc
213

Binary2Decimal.sh ডাউনলোড করুন

সেরকম আপনি অক্টাল, হেক্সাডেসিমাল থেকে ডেসিমাল এবং তার বিপরীত কনভারশন নিজে লিখতে পারেন। উপরের ফলাফল টার্মিনালে 'bc' কমান্ড ব্যবহার করে অর্জন করা যায়।

ডেসিমাল থেকে অক্টাল

[admin@wsxdn.com ~]# echo "obase=8; Decimal" | bc

ডেসিমাল থেকে হেক্সাডেসিমাল

[admin@wsxdn.com ~]# echo "obase=16; Decimal" | bc

অক্টাল থেকে ডেসিমাল

[admin@wsxdn.com ~]# echo "ibase=8; Octal" | bc

হেক্সাডেসিমাল থেকে ডেসিমাল

[admin@wsxdn.com ~]# echo "ibase=16; Hexadecimal" | bc

বাইনারি থেকে অক্টাল

[admin@wsxdn.com ~]# echo "ibase=2;obase=8 Binary" | bc

শেল স্ক্রিপ্টিং ল্যাঙ্গুয়েজে ব্যবহৃত কিছু সাধারণ সংখ্যাসূচক টেস্ট বর্ণনা সহ।

Test : INTEGER1 -eq INTEGER2
Meaning: INTEGER1 INTEGER2-র সমান
Test : INTEGER1 -ge INTEGER2
Meaning: INTEGER1 INTEGER2-র চেয়ে বড় বা সমান
Test: INTEGER1 -gt INTEGER2
Meaning: INTEGER1 INTEGER2-র চেয়ে বড়
Test: INTEGER1 -le INTEGER2
Meaning: INTEGER1 INTEGER2-র চেয়ে ছোট বা সমান
Test: INTEGER1 -lt INTEGER2
Meaning: INTEGER1 INTEGER2-র চেয়ে ছোট
Test: INTEGER1 -ne INTEGER2
Meaning: INTEGER1 INTEGER2-র সমান নয়

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

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

  1. লিনাক্স ভেরিয়েবল শেল স্ক্রিপ্টিং-এ মাস্টার করুন - পার্ট ১০: এক্সপার্ট অন্তর্দৃষ্টি

  2. লিনাক্স শেল স্ক্রিপ্টিং: ভেরিয়েবল নিয়ে গভীরে দৃষ্টিপাত – পার্ট ৯

  3. কাস্টম শেল ফাংশন ও লাইব্রেরি মাস্টার করুন: লিনাক্স ব্যবহারকারীদের জন্য প্র্যাকটিক্যাল গাইড

  4. ব্যাশ স্ক্রিপ্টিং মাস্টার করুন: ৫টি রিয়েল-ওয়ার্ল্ড উদাহরণসহ প্র্যাক্টিক্যাল ইন্ট্রোডাকশন