Matemātisko izteiksmju aprēķināšana čaulas skriptu valodā - V daļa


Jūs, cilvēki, jutīsieties ērti, saprotot čaulas skriptus un tekoši tos rakstāt, atbilstoši jūsu vajadzībām. Šis ir pēdējais šīs apmācību sērijas ziņojums, kurā mēs veiksim mazliet sarežģītas matemātiskās operācijas, izmantojot skriptu valodu. Četri pēdējie Shell Scripting sērijas raksti, kas ir hronoloģiski.

  1. Izprotiet pamata Linux čaulas skriptu valodas padomus - I daļa
  2. 5 čaulas skripti iesācējiem Linux, lai uzzinātu čaulas programmēšanu - II daļa
  3. Burāšana caur Linux BASH skriptu pasauli - III daļa
  4. Linux čaulas programmēšanas matemātiskais aspekts - IV daļa

Sāksim ar Fibonači sēriju

Skaitļu paraugs, kur katrs skaitlis ir divu iepriekšējo skaitļu summa. Sērija ir 0, 1, 1, 2, 3, 5, 8 ... ... Pēc definīcijas pirmie divi skaitļi Fibonccai secībā ir 0 un 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

Jums ir pazīstams fakts, ka dators saprot tikai binārā formātā, t.i., ‘0’ un ‘1’, un lielākajai daļai no mums ir paticis mācīties pārvērst decimāldaļu binārā. Kā par vienkārša skripta uzrakstīšanu šai sarežģītajai darbībai.

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

Piezīme. Iepriekš minētais skripts pieņem ievadi izpildes laikā, kas acīmredzami ir palīgs.

Nu, iebūvētā komanda “bc” var pārveidot decimālu par bināru vienas rindiņas skriptā. Skrien, pie sava termināla.

 echo "obase=2; NUM" | bc

Nomainiet “NUM” ar skaitli, kuru vēlaties pārvērst no decimāla uz bināru. Piemēram,

 echo "obase=2; 121" | bc 

1111001

Tālāk mēs rakstīsim skriptu, kas darbojas tieši pretēji iepriekšminētajam skriptam, bināro vērtību konvertēšana uz decimāldaļu.

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

Piezīme. Iepriekš minēto funkciju var veikt terminālā, izmantojot komandu ‘bc’ kā.

 echo "ibase=2; BINARY" | bc

Aizstājiet “BINARY” ar bināro skaitli, ti,

 echo "ibase=2; 11010101" | bc 

213

Līdzīgi jūs pats varat rakstīt konvertāciju no oktāla, heksadecimālā līdz decimāldaļai un otrādi. Iepriekš minētā rezultāta izpilde terminālā, izmantojot komandu ‘bc’, ir.

 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

Daži no kopējiem skaitliskajiem testiem, ko izmanto čaulas skriptu valodā ar aprakstu, ir.

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

Tas ir viss šim rakstam un rakstu sērijai. Šis ir pēdējais Shell Script Series raksts, un tas nenozīmē, ka neviens raksts par skriptu valodu vairs šeit nebūs, tas nozīmē tikai to, ka shell skriptu apmācība ir beigusies, un ikreiz, kad mēs atrodam interesantu tēmu, kuru ir vērts zināt, vai vaicājumu no jums, cilvēkiem, mēs ar prieku turpināsim sēriju no šejienes.

Esiet vesels, noregulēts un savienots ar Tecmint. Ļoti drīz es nākšu ar citu interesantu tēmu, jūs, cilvēki, labprāt lasīsit. Dalieties vērtīgajās domās komentāru sadaļā.