Matematický aspekt programování Linux Shell - část IV
V tomto příspěvku budu diskutovat o Skriptech z matematického a číslaho hlediska. I když jsem v předchozím příspěvku zveřejnil složitější skript (Jednoduchá kalkulačka), ale ze strany uživatele to bylo obtížné pochopit, a proto jsem se rozhodl přimět vás, abyste se naučili druhou užitečnou stránku učení v malé balíčky.
Před tímto článkem byly publikovány tři články z Shell Scripting Series, a to:
- Pochopte Linux Shell a základní skriptování Shell – část I
- 5 Shell skriptů pro výuku Shell programování – část II
- Plavba světem Linuxu BASH Scripting – část III
Začněme další proces učení několika novými vzrušujícími skripty, začněme skripty Matematika:
Skript 1: Dodatky
Vytvořte soubor „Addition.sh“ a chmod 755 do skriptu, jak je popsáno v předchozím příspěvku, a spusťte jej.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
x=$(expr "$a" + "$b")
echo $a + $b = $x
Ukázkový výstup
[root@tecmint ~]# vi Additions.sh
[root@tecmint ~]# chmod 755 Additions.sh
[root@tecmint ~]# ./Additions.sh
“Enter the First Number: ”
12
“Enter the Second Number: ”
13
12 + 13 = 25
Stáhnout Additions.sh
Scénář 2: Odčítání
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
x=$(($a - $b))
echo $a - $b = $x
Poznámka: Zde jsme nahradili výraz a nechali jsme matematický výpočet provést v shellu.
Ukázkový výstup
[root@tecmint ~]# vi Substraction.sh
[root@tecmint ~]# chmod 755 Substraction.sh
[root@tecmint ~]# ./Substraction.sh
“Enter the First Number: ”
13
“Enter the Second Number: ”
20
13 - 20 = -7
Stáhněte si Substraction.sh
Skript 3: Násobení
Zatím by vás bavilo učit se skripta tak snadným způsobem, takže další v chronologickém pořadí je Násobení.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
echo "$a * $b = $(expr $a \* $b)"
Poznámka: Ano! Zde jsme nevložili hodnotu násobení do proměnné, ale provedli jsme ji přímo ve výstupním příkazu.
Ukázkový výstup
[root@tecmint ~]# vi Multiplication.sh
[root@tecmint ~]# chmod 755 Multiplication.sh
[root@tecmint ~]# ./Multiplication.sh
“Enter the First Number: ”
11
“Enter the Second Number: ”
11
11 * 11 = 121
Stáhněte si Multiplication.sh
Scénář 4: Rozdělení
Že jo! Další je Division a opět se jedná o velmi jednoduchý skript. Zkontrolujte si to sami.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
echo "$a / $b = $(expr $a / $b)"
Ukázkový výstup
[root@tecmint ~]# vi Division.sh
[root@tecmint ~]# chmod 755 Division.sh
[root@tecmint ~]# ./Division.sh
“Enter the First Number: ”
12
“Enter the Second Number: ”
3
12 / 3 = 4
Stáhněte si Division.sh
Skript 5: Tabulka
Pokuta! Co po těchto základních matematických operacích. Pojďme napsat skript, který vytiskne tabulku libovolného čísla.
#!/bin/bash
echo “Enter The Number upto which you want to Print Table: ”
read n
i=1
while [ $i -ne 10 ]
do
i=$(expr $i + 1)
table=$(expr $i \* $n)
echo $table
done
Ukázkový výstup
[root@tecmint ~]# vi Table.sh
[root@tecmint ~]# chmod 755 Table.sh
[root@tecmint ~]# ./Table.sh
“Enter The Number upto which you want to Print Table: ”
29
58
87
116
145
174
203
232
261
290
Stáhněte si Table.sh
Scénář 6: SudýLichý
Jako dítě jsme vždy prováděli výpočty, abychom zjistili, zda je číslo liché nebo sudé. Nebylo by dobré to implementovat do skriptu.
#!/bin/bash
echo "Enter The Number"
read n
num=$(expr $n % 2)
if [ $num -eq 0 ]
then
echo "is a Even Number"
else
echo "is a Odd Number"
fi
Ukázkový výstup
[root@tecmint ~]# vi EvenOdd.sh
[root@tecmint ~]# chmod 755 EvenOdd.sh
[root@tecmint ~]# ./EvenOdd.sh
Enter The Number
12
is a Even Number
[root@tecmint ~]# ./EvenOdd.sh
Enter The Number
11
is a Odd Number
Stáhněte si EvenOdd.sh
Scénář 7: Faktor
Další je najít Factorial.
#!/bin/bash
echo "Enter The Number"
read a
fact=1
while [ $a -ne 0 ]
do
fact=$(expr $fact \* $a)
a=$(expr $a - 1)
done
echo $fact
Ukázkový výstup
[root@tecmint ~]# vi Factorial.sh
[root@tecmint ~]# chmod 755 Factorial.sh
[root@tecmint ~]# ./Factorial.sh
Enter The Number
12
479001600
Nyní můžete odpočívat s pocitem, že výpočet 12*11*10*9*7*7*6*5*4*3*2*1 by byl obtížnější než jednoduchý skript, jak je vytvořen výše . Představte si situaci, kdy potřebujete najít 99! nebo něco podobného. Tak určitě! Tento skript bude v této situaci velmi užitečný.
Stáhněte si Factorial.sh
Scénář 8: Armstrong
Číslo Armstrong! Ohhh Zapomněl jsi, co je Armstrongovo číslo. Armstrongovo číslo se třemi číslicemi je celé číslo takové, že součet mocnin jeho číslic se rovná samotnému číslu. Například 371 je Armstrongovo číslo, protože 3**3 + 7**3 + 1**3=371.
#!/bin/bash
echo "Enter A Number"
read n
arm=0
temp=$n
while [ $n -ne 0 ]
do
r=$(expr $n % 10)
arm=$(expr $arm + $r \* $r \* $r)
n=$(expr $n / 10)
done
echo $arm
if [ $arm -eq $temp ]
then
echo "Armstrong"
else
echo "Not Armstrong"
fi
Ukázkový výstup
[root@tecmint ~]# vi Armstrong.sh
[root@tecmint ~]# chmod 755 Armstrong.sh
[root@tecmint ~]# ./Armstrong.sh
Enter A Number
371
371
Armstrong
[root@tecmint ~]# ./Armstrong.sh
Enter A Number
123
36
Not Armstrong
Stáhněte si Armstrong.sh
Scénář 9: Prime
Posledním skriptem je rozlišit, zda je číslo prvočíslo nebo ne.
#!/bin/bash
echo “Enter Any Number”
read n
i=1
c=1
while [ $i -le $n ]
do
i=$(expr $i + 1)
r=$(expr $n % $i)
if [ $r -eq 0 ]
then
c=$(expr $c + 1)
fi
done
if [ $c -eq 2 ]
then
echo “Prime”
else
echo “Not Prime”
fi
Ukázkový výstup
[root@tecmint ~]# vi Prime.sh
[root@tecmint ~]# chmod 755 Prime.sh
[root@tecmint ~]# ./Prime.sh
“Enter Any Number”
12
“Not Prime”
Stáhněte si Prime.sh
To je prozatím vše. V našem dalším článku se budeme zabývat dalšími matematickými programy v programovacím jazyce shell Scripting. Nezapomeňte uvést svůj názor na článek v sekci Komentáře. Lajkujte a sdílejte nás a pomozte nám šířit. Navštivte linux-console.net, kde najdete Novinky a články týkající se FOSS. Do té doby zůstaňte naladěni.