Izračunavanje matematičkih izraza u školskom skriptnom jeziku - V dio


Vi biste se osjećali ugodno, razumjeli Shell skripte i tečno ih napisali, prema vašoj potrebi. Ovo je posljednji post ove serije tutorijala, gdje ćemo izvoditi pomalo složene matematičke operacije koristeći skriptni jezik. Posljednja četiri članka serije Shell Scripting koji su kronološki.

  1. Razumijevanje osnovnih savjeta za skriptni jezik za Linux Shell - I. dio
  2. 5 skripti školjke za Linux početnike koji će naučiti programiranje ljuske - II dio
  3. Jedrenje svijetom Linux BASH skripti - III. dio
  4. Matematički aspekt programiranja ljuske Linuxa - Dio IV

Krenimo od Fibonaccijeve serije

Uzorak brojeva gdje je svaki broj zbroj dva prethodna broja. Niz je 0, 1, 1, 2, 3, 5, 8 ...... Po definiciji, prva dva broja u nizu Fibonccai su 0 i 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

Upoznati ste s činjenicom da računalo razumije samo u binarnom formatu, tj. '0' i '1' i većina nas je uživala učeći pretvaranje decimale u binarno. Kako bi bilo da napišete jednostavnu skriptu za ovu složenu operaciju.

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

Napomena: Gornja skripta prihvaća ulaz u vrijeme izvođenja, što je očito pomoć.

Pa, ugrađena naredba "bc" može pretvoriti decimalni u binarni u skripti od jednog retka. Trči, na svoj terminal.

 echo "obase=2; NUM" | bc

Zamijenite ‘NUM’ brojem koji želite pretvoriti iz decimalnog u binarni. Na primjer,

 echo "obase=2; 121" | bc 

1111001

Dalje ćemo napisati skriptu koja funkcionira upravo suprotno od gornje skripte, pretvarajući binarne vrijednosti u decimalne.

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

Napomena: Gornja se funkcija može izvesti u terminalu pomoću naredbe 'bc' kao.

 echo "ibase=2; BINARY" | bc

Zamijenite "BINARY" binarnim brojem, tj.

 echo "ibase=2; 11010101" | bc 

213

Slično tome, sami možete napisati pretvorbu iz osmice, heksadecimalne u decimalnu i obratno. Postizanje gornjeg rezultata u terminalu pomoću naredbe "bc" je.

 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

Neki od uobičajenih numeričkih testova koji se koriste u školskom skriptnom jeziku s opisom su.

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

To je sve za ovaj članak i seriju članaka. Ovo je posljednji članak Shell Script Series i to ne znači da neće biti ponovno niti jedan članak o skriptnom jeziku, to samo znači da je tutorial za skriptanje ljuske gotov i kad god pronađemo zanimljivu temu koju vrijedi znati ili upit od vas ljudi, rado ćemo nastaviti odavde odavde.

Ostanite zdravi, prilagođeni i povezani s Tecmintom. Vrlo brzo dolazim s još jednom zanimljivom temom, voljeli biste čitati. Podijelite svoje vrijedne misli u odjeljku za komentare.