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.
- Izprotiet pamata Linux čaulas skriptu valodas padomus - I daļa
- 5 čaulas skripti iesācējiem Linux, lai uzzinātu čaulas programmēšanu - II daļa
- Burāšana caur Linux BASH skriptu pasauli - III daļa
- 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ļā.