Kukokotoa Maneno ya Hisabati katika Lugha ya Maandishi ya Shell - Sehemu ya V


Ninyi Watu mngejisikia raha, kuelewa Maandishi ya Shell na kuyaandika kwa ufasaha, kulingana na hitaji lako. Hili ni chapisho la mwisho la mfululizo huu wa mafunzo, ambapo tutakuwa tukifanya Operesheni changamano cha Hisabati kwa kutumia lugha ya uandishi. Nakala nne za mwisho za safu ya Maandishi ya Shell ambayo yanafuatana.

  1. Elewa Vidokezo vya Msingi vya Lugha ya Uandishi wa Shell ya Linux - Sehemu ya I
  2. Hati 5 za Shell za Linux Wapya Kujifunza Utayarishaji wa Shell - Sehemu ya II
  3. Kusafiri Katika Ulimwengu wa Linux BASH Scripting - Sehemu ya III
  4. Kipengele cha Hisabati cha Upangaji wa Linux Shell - Sehemu ya IV

Wacha tuanze na Msururu wa Fibonacci

Mchoro wa nambari ambapo kila nambari ni jumla ya nambari mbili zinazotangulia. Msururu ni 0, 1, 1, 2, 3, 5, 8…… Kwa ufafanuzi, nambari mbili za kwanza katika mfuatano wa Fibonccai ni 0 na 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

Unafahamu ukweli kwamba kompyuta inaelewa tu katika Umbizo la Nambari, yaani, '0' na '1' na wengi wetu tumefurahia kujifunza ubadilishaji wa Desimali hadi Nambari. Vipi kuhusu kuandika hati rahisi kwa operesheni hii ngumu.

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

Kumbuka: Hati iliyo hapo juu inakubali Ingizo wakati wa kukimbia, ambayo ni msaada.

Kweli, amri ya 'bc' iliyojengwa inaweza kubadilisha nambari kuwa ya binary katika hati ya laini moja. Endesha, kwenye terminal yako.

 echo "obase=2; NUM" | bc

Badilisha ‘NUM’ na nambari, ambayo ungependa kubadilisha kutoka Desimali hadi Nambari. Kwa mfano,

 echo "obase=2; 121" | bc 

1111001

Ifuatayo tutakuwa tukiandika hati ambayo hufanya kazi kinyume kabisa na hati iliyo hapo juu, Kubadilisha Maadili ya Binary kuwa Desimali.

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

Kumbuka: Kazi iliyo hapo juu inaweza kufanywa kwa terminal kwa kutumia amri ya 'bc' kama.

 echo "ibase=2; BINARY" | bc

Badilisha 'BINARY' na nambari ya binary, yaani.,

 echo "ibase=2; 11010101" | bc 

213

Vile vile unaweza kuandika ubadilishaji kutoka octal, hexadecimal hadi desimali na kinyume chake wewe mwenyewe. Kukamilisha matokeo hapo juu kwa terminal kutumia 'bc'amri ni.

 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

Baadhi ya majaribio ya Nambari ya Kawaida yanayotumika katika lugha ya uandishi wa ganda na maelezo ni.

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

Hiyo ni yote kwa nakala hii, na safu ya nakala. Haya ni makala ya mwisho ya Mfululizo wa Hati ya Shell na haimaanishi kuwa hakuna makala kuhusu lugha ya Hati itakayopatikana tena, inamaanisha tu kwamba mafunzo ya uandishi wa ganda yamekamilika na wakati wowote tunapopata mada ya kuvutia inayostahili kujua au swali kutoka kwenu watu, tutafurahi kuendelea na mfululizo kutoka hapa.

Kuwa na afya njema, usikivu na uunganishwe na Tecmint. Karibuni sana nitakuja na mada nyingine ya kuvutia, nyinyi watu mtapenda kusoma. Shiriki mawazo yako muhimu katika Sehemu ya Maoni.