Matematikai kifejezések kiszámítása Shell Scripting nyelven – V. rész
Ön, emberek, jól érezné magát, megértené a Shell-szkripteket, és folyékonyan írná azokat, az Ön igényei szerint. Ez az oktatóanyag-sorozat utolsó bejegyzése, amelyben kissé összetett matematikai műveleteket fogunk végrehajtani szkriptnyelv segítségével. A Shell Scripting sorozat utolsó négy cikke, amelyek időrendben vannak.
- Alapvető Linux Shell Scripting nyelvi tippek – I. rész
- 5 Shell Script Linux kezdőknek a Shell programozás elsajátításához – II. rész
- Áthajózás a Linux BASH Scripting világán – III. rész
- A Linux Shell programozás matematikai vonatkozása – IV. rész
Kezdjük a Fibonacci sorozattal
Számminta, ahol minden szám két előző szám összege. A sorozat: 0, 1, 1, 2, 3, >5, 8…… Értelemszerűen a Fibonccai sorozat első két száma 0 és 1.
1. szkript: Fibonacci.sh
#!/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
Minta kimenet
[root@tecmint ~]# chmod 755 Fibonacci.sh
[root@tecmint ~]# ./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
Töltse le a Fibonacci.sh-t
Ön ismeri azt a tényt, hogy a számítógép csak a bináris formátumot érti, azaz a '0' és '1' formátumot, és legtöbbünk örömmel tanulta a konvertálását. >Tizedes - Bináris. Mit szólna ehhez az összetett művelethez egy egyszerű szkript megírásához.
2. szkript: Decimal2Binary.sh
#!/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 $@; 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
Minta kimenet
[root@tecmint ~]# chmod 755 Decimal2Binary.sh
[root@tecmint ~]# ./Decimal2Binary.sh 1121
Decimal Binary
1121 10001100001
Megjegyzés: A fenti szkript futás közben fogadja a bevitelt, ami nyilvánvalóan segítség.
Töltse le a Decimal2Binary.sh-t
Nos, a beépített 'bc' parancs képes a tizedeset binárisra konvertálni egy egysoros szkriptben. Fuss a terminálon.
[root@tecmint ~]# echo "obase=2; NUM" | bc
Cserélje ki a „NUM” értéket arra a számra, amelyet tizedesről binárisra szeretne konvertálni. Például,
[root@tecmint ~]# echo "obase=2; 121" | bc
1111001
Ezután egy olyan szkriptet írunk, amely a fenti Bináris értékek konvertálása tizedes szkripttel ellentétben működik.
3. szkript: Binary2Decimal.sh
#!/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
Minta kimenet
[root@tecmint ~]# chmod 755 Binary2Decimal.sh
[root@tecmint ~]# ./Binary2Decimal.sh
Enter a number :
11
3
Megjegyzés: A fenti funkció a terminálban végrehajtható a „bc” parancs használatával.
[root@tecmint ~]# echo "ibase=2; BINARY" | bc
Cserélje ki a „BINARY” kifejezést a bináris számra, azaz
[root@tecmint ~]# echo "ibase=2; 11010101" | bc
213
Töltse le a Binary2Decimal.sh-t
Hasonlóképpen saját maga is megírhatja a konverziót oktális, hexadecimális értékről tizedesre és fordítva. A fenti eredmény elérése terminálban a „bc” paranccsal az.
Tizedestől oktálisig
[root@tecmint ~]# echo "obase=8; Decimal" | bc
Tizedestől hexadecimálisig
[root@tecmint ~]# echo "obase=16; Decimal" | bc
Oktálistól tizedesjegyig
[root@tecmint ~]# echo "ibase=8; Octal" | bc
Hexadecimálistól decimálisig
[root@tecmint ~]# echo "ibase=16; Hexadecimal" | bc
Bináristól oktálisig
[root@tecmint ~]# echo "ibase=2;obase=8 Binary" | bc
A leírással ellátott shell szkriptnyelvben használt általános numerikus tesztek közül néhány.
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
Ennyi a cikkhez és a cikksorozathoz. Ez a Shell Script Series utolsó cikke, és ez nem jelenti azt, hogy nem lesz itt többé cikk a szkriptnyelvről, csak azt jelenti, hogy a shell scripting bemutatója véget ért, és ha találunk egy érdekes témát, amelyet érdemes megismerni. vagy egy kérdésre, szívesen folytatjuk a sorozatot innen.
Maradjon egészséges, maradjon velünk, és kapcsolódjon a Tecminthez. Hamarosan újabb érdekes témával jelentkezem, imádni fogjátok az olvasást. Ossza meg értékes gondolatait a Megjegyzések részben.