Útreikningur á stærðfræðilegum tjáningum á skeljaforskriftarmáli - V. hluti
Þið fólk myndi líða vel, skilja Shell Scripts og skrifa þau reiprennandi, eins og þú þarft. Þetta er síðasta færslan í þessari kennsluröð, þar sem við munum framkvæma svolítið flóknar stærðfræðilegar aðgerðir með forskriftarmáli. Síðustu fjórar greinar í Shell Scripting seríunni sem eru í tímaröð.
- Skiljið undirstöðuráðleggingar um Linux Shell forskriftarmál – I. hluti
- 5 Shell forskriftir fyrir Linux nýliða til að læra Shell forritun – Part II
- Sigling í gegnum heim Linux BASH skrifta – hluti III
- Stærðfræðilegur þáttur Linux Shell-forritunar – Hluti IV
Byrjum á Fibonacci seríunni
Mynstur talna þar sem hver tala er summa af tveimur fyrri tölum. Röðin er 0, 1, 1, 2, 3, 5, 8…… Samkvæmt skilgreiningu eru fyrstu tvær tölurnar í Fibonccai röðinni 0 og 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
Þú þekkir þá staðreynd að tölva skilur aðeins á tvöfalda sniðinu, þ.e. „0“ og „1“ og flest okkar hafa notið þess að læra umbreytingu á aukastaf í tvöfaldur. Hvernig væri að skrifa einfalt handrit fyrir þessa flóknu aðgerð.
#!/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
Athugið: Ofangreind handrit samþykkir inntak á keyrslutíma, sem augljóslega er hjálpartæki.
Jæja, innbyggða 'bc' skipunin getur umbreytt aukastaf í tvöfaldur í handriti með einni línu. Hlaupa, við flugstöðina þína.
echo "obase=2; NUM" | bc
Skiptu út 'NUM' fyrir töluna sem þú vilt breyta úr aukastaf í tvöfaldur. Til dæmis,
echo "obase=2; 121" | bc 1111001
Næst munum við skrifa handrit sem virkar beint á móti ofangreindu handriti, umbreyta tvígildum í aukastaf.
#!/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
Athugið: Hægt er að framkvæma ofangreinda aðgerð í flugstöðinni með því að nota 'bc' skipunina sem.
echo "ibase=2; BINARY" | bc
Skiptu út „BINARY“ fyrir tvíundarnúmerið, þ.e.
echo "ibase=2; 11010101" | bc 213
Á sama hátt getur þú skrifað umbreytingu úr áttund, sextánda tölu yfir í aukastaf og öfugt sjálfur. Að ná ofangreindri niðurstöðu í flugstöðinni með því að nota 'bc' skipunina er.
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
Sum algengu töluprófin sem notuð eru í skel forskriftarmáli með lýsingu eru.
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
Það er allt fyrir þessa grein og greinaröðina. Þetta er síðasta greinin í Shell Script Series og það þýðir ekki að engin grein um forskriftarmál verði hér aftur, það þýðir aðeins að skeljaforskriftarkennslunni er lokið og alltaf þegar við finnum áhugavert efni sem vert er að vita eða fyrirspurn frá ykkur, við munum með ánægju halda áfram seríunni héðan.
Vertu heilbrigður, stilltur og tengdur við Tecmint. Mjög bráðlega mun ég koma með annað áhugavert efni, þið munuð elska að lesa. Deildu dýrmætum hugsunum þínum í athugasemdahlutanum.