Bash
Matematyka
Szukaj…
Matematyka za pomocą dc
dc
jest jednym z najstarszych języków Uniksa.
Wykorzystuje odwrotną notację polerowania , co oznacza, że najpierw układasz liczby, a następnie operacje. Na przykład 1+1
jest zapisany jako 1 1+
.
Aby wydrukować element z góry stosu, użyj polecenia p
echo '2 3 + p' | dc
5
or
dc <<< '2 3 + p'
5
Możesz wydrukować górny element wiele razy
dc <<< '1 1 + p 2 + p'
2
4
W przypadku liczb ujemnych użyj _
prefiksu
dc <<< '_1 p'
-1
Możesz także używać wielkich liter od A to F
dla liczb od 10 and 15
i .
jako przecinek dziesiętny
dc <<< 'A.4 p'
10.4
dc
używa precyzji abitracyjnej, co oznacza, że precyzja jest ograniczona tylko dostępną pamięcią. Domyślnie dokładność jest ustawiona na 0 miejsc po przecinku
dc <<< '4 3 / p'
1
Możemy zwiększyć precyzję za pomocą polecenia k
. 2k
dc <<< '2k 4 3 / p'
1.33
dc <<< '4k 4 3 / p'
1.3333
Możesz go również używać w wielu liniach
dc << EOF
1 1 +
3 *
p
EOF
6
bc
jest preprocesorem dladc
.
Matematyka za pomocą BC
bc
to język kalkulatora o dowolnej precyzji. Można go użyć interaktywnie lub wykonać z wiersza poleceń.
Na przykład może wydrukować wynik wyrażenia:
echo '2 + 3' | bc
5
echo '12 / 5' | bc
2
W przypadku arytmetyki zmiennoprzecinkowej możesz zaimportować standardową bibliotekę bc -l
:
echo '12 / 5' | bc -l
2.40000000000000000000
Można go używać do porównywania wyrażeń:
echo '8 > 5' | bc
1
echo '10 == 11' | bc
0
echo '10 == 10 && 8 > 3' | bc
1
Matematyka wykorzystująca możliwości bash
Obliczenia arytmetyczne można również wykonać bez angażowania innych programów takich jak ten:
Mnożenie:
echo $((5 * 2))
10
Podział:
echo $((5 / 2))
2
Modulo:
echo $((5 % 2))
1
Potęgowanie:
echo $((5 ** 2))
25
Matematyka za pomocą wyraż
expr
lub Evaluate expressions
ocenia wyrażenie i zapisuje wynik na standardowym wyjściu
Podstawowa arytmetyka
expr 2 + 3
5
Podczas mnożenia musisz uciec od znaku *
expr 2 \* 3
6
Możesz także użyć zmiennych
a=2
expr $a + 3
5
Pamiętaj, że obsługuje tylko liczby całkowite, więc wyrażenie takie jak ten
expr 3.0 / 2
wyrzuci błąd expr: not a decimal number: '3.0'
.
Obsługuje wyrażenia regularne w celu dopasowania wzorców
expr 'Hello World' : 'Hell\(.*\)rld'
o Wo
Lub znajdź indeks pierwszego znaku w ciągu wyszukiwania
Spowoduje to
expr: syntax error
w systemie Mac OS X , ponieważ używa polecenia BSD wyrażenie, które nie ma polecenia indeksowania, podczas gdy wyrażenie w systemie Linux to ogólnie wyrażenie GNU
expr index hello l
3
expr index 'hello' 'lo'
3