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.
- Razumijevanje osnovnih savjeta za skriptni jezik za Linux Shell - I. dio
- 5 skripti školjke za Linux početnike koji će naučiti programiranje ljuske - II dio
- Jedrenje svijetom Linux BASH skripti - III. dio
- 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.