Obliczanie wyrażeń matematycznych w języku skontaktowym skorupy - Część V

Obliczanie wyrażeń matematycznych w języku skontaktowym skorupy - Część V

Wy, ludzie czulibyście się komfortowo, zrozumieni Skrypty powłoki i pisząc je płynnie, zgodnie z potrzebami. To ostatni post z tej serii samouczków, w której będziemy wykonywać nieco złożone Operacje matematyczne Korzystanie z języka skryptowego. Ostatnie cztery artykuły Skrypty powłoki serie, które są chronologicznie.

Naucz się część skorupy - v
  1. Zrozum Podstawowe wskazówki dotyczące skryptów scenariuszy Linux - Część I
  2. 5 Skrypty powłoki dla nowicjusz
  3. Żeglując po świecie scenariuszy Linux Bash - część III
  4. Matematyczny aspekt programowania Linux Shell - Część IV

Zacznijmy od serii Fibonaccie

Wzór liczb, w którym każda liczba jest sumą dwóch poprzednich liczb. Seria jest 0, 1, 1, 2, 3, 5, 8… Z definicji dwa pierwsze liczby w Fibonccai sekwencja to 0 i 1.

Skrypt 1: Fibonacci.cii
#!/bin/bash echo "Ile liczb chcesz serii Fibonaccie ?„Przeczytaj całkowitą x = 0 y = 1 i = 2 echo” seria Fibonacciego do $ Total Warunki :: „echo” $ x "echo" $ y ", a [$ i -lt $ Total] do =" expr $ i + 1 "z =" expr $ x + $ y "echo" $ z "x = $ y y = $ z gotowe
Przykładowy wyjście
[[e -mail chroniony] ~]# chmod 755 fibonacci.sh [[e -mail chroniony] ~]# ./Fibonacci.SH Ile liczb chcesz serii Fibonacci ? 10 serii Fibonacciego do 10 terminów :: 0 1 1 2 3 5 8 13 21 34

Pobierz Fibonacci.cii

Znasz fakt, że komputer rozumie tylko w formacie binarnym, ja.mi., '0' I '1„I większość z nas lubi uczyć się nawrócenia Dziesiętny Do Dwójkowy. Co powiesz na napisanie prostego skryptu do tej złożonej operacji.

Skrypt 2: Decimal2binary.cii
#!/bin/bash for ((i = 32; i> = 0; i--)); DO r = $ ((2 ** $ i)) Probabity+= ($ r) wykonane [[$# -eq 0] i echo -en „decimal \ t \ tbinary \ n” dla Input_int w [e -mail chroniony]; do s = 0 test $ #input_int -GT 11 i printf "%-10S \ t" "$ input_int" dla n in $ probabity [@]; do jeśli [[$ input_int -lt $ n]]; Następnie [[$ S = 1]] && printf "%d" 0 else printf "%d" 1; s = 1 input_int = $ (($ input_int - $ n)) fi gotowe echo -e gotowe
Przykładowy wyjście
[[e -mail chroniony] ~]# chmod 755 decimal2binary.sh [[e -mail chroniony] ~]# ./Decimal2binary.SH 1121 BINIALNE BINIALNE 1121 10001100001

Notatka: Powyższy skrypt akceptuj dane wejściowe w czasie wykonywania, co oczywiście jest pomocą.

Pobierz Decimal2Binary.cii

Cóż, wbudowane 'pne„polecenie może konwertować a dziesiętny Do dwójkowy w skrypcie pojedynczego linii. Uruchom na terminalu.

[[e -mail chroniony] ~]# echo "Obase = 2; num" | pne

Zastępować 'Num„z liczbą, z której chcesz się konwertować Dziesiętny Do Dwójkowy. Na przykład,

[[e -mail chroniony] ~]# echo "Obase = 2; 121" | BC 1111001

Następnie będziemy pisać skrypt, który funkcjonuje przeciwnie do powyższego skryptu, Przekształcenie wartości binarnych Do Dziesiętny.

Skrypt 3: Binary2decimal.cii
#!/bin/bash echo "Wprowadź numer:" odczytaj binarny, jeśli [$ binary -eq 0] następnie echo "Wprowadź prawidłową liczbę" else, a [$ binary -ne 0] do bnumber = $ binarne decimal = 0 Power = 1 w czasie [$ Binary -Ne 0] do rem = $ (expr $ binary % 10) dziesiętny = $ ((dziesiętny+(rem*power)))) Power = $ ((Power*2)) binary = $ (expr $ binary / 10 ) gotowe echo „$ decimal” zrobione fi
Przykładowy wyjście
[[e -mail chroniony] ~]# chmod 755 binary2decimal.sh [[e -mail chroniony] ~]# ./Binary2decimal.SH Wprowadź numer: 11 3

Notatka: Powyższa funkcja może być wykonana w terminalu za pomocą 'pne„polecenie jako.

[[e -mail chroniony] ~]# echo "ibase = 2; binary" | pne

Zastępować 'DWÓJKOWY„Z numerem binarnym, a mianowicie.,

[[e -mail chroniony] ~]# echo "ibase = 2; 11010101" | BC 213

Pobierz Binary2Decimal.cii

Podobnie możesz napisać konwersję z Octal, szesnastkowy Do dziesiętny i odwrotnie sam. Osiągnięcie powyższego wyniku w terminalu za pomocą 'pne„polecenie jest.

Dziesiętne do ósemka
[[e -mail chroniony] ~]# echo "Obase = 8; dziesiętny" | pne
Dziesiętne do heksadecimal
[[e -mail chroniony] ~]# echo "Obase = 16; dziesiętny" | pne
Octal do dziesiętny
[[e -mail chroniony] ~]# echo "ibase = 8; Octal" | pne
Heksadecimal do dziesiętnego
[[e -mail chroniony] ~]# echo "ibase = 16; hexadecimal" | pne
Binarny do ósemka
[[e -mail chroniony] ~]# echo "ibase = 2; obase = 8 binarne" | pne

Niektóre Wspólne numeryczne Testy używane w języku skontaktowym z opisem jest.

TEST: INTEGER1 -EQ INTEGER2 Znaczenie: Integer1 jest równe całkowitej liczbie całkowitych2
TEST: INTEGER1 -GE INTEGER2 Znaczenie: Integer1 jest większy lub równy całkowitej liczbie
TEST: INTEGER1 -GT INTEGER2 Znaczenie: Integer1 jest większy niż liczba całkowita 2
TEST: INTEGER1 -LE INTEGER2 Znaczenie: Integer1 jest mniejszy lub równa liczbie całkowitych2
TEST: INTEGER1 -LT INTEGER2 Znaczenie: Integer1 jest mniej niż liczba całkowita 2
TEST: INTEGER1 -NE INTEGER2 Znaczenie: Integer1 nie jest równe całkowitej liczbie całkowitych2

To wszystko dla tego artykułu i serii artykułów. To jest ostatni artykuł Seria skryptów Shell I nie oznacza to, że żaden artykuł na temat języka scenariusza nie będzie tu znowu, oznacza to, że samouczek scenariusza skorupy się skończył i ilekroć znajdziemy ciekawy temat, który warto wiedzieć lub zapytanie od ludzi, z przyjemnością będziemy kontynuować serię z serii Tutaj.

Bądź zdrowy, dostrojony i połączony z Tecmint. Wkrótce przyjdę z kolejnym interesującym tematem, ludzie pokochasz czytać. Podziel się swoimi cennymi przemyśleniami Sekcja komentarzy.