Ricerca…


Math usando dc

dc è una delle lingue più vecchie di Unix.

Sta usando la notazione di smalto inverso , il che significa che si stanno prima impilando i numeri, quindi le operazioni. Ad esempio 1+1 è scritto come 1 1+ .

Per stampare un elemento dalla cima dello stack usa il comando p

echo '2 3 + p' | dc
5

or

dc <<< '2 3 + p'
5

È possibile stampare l'elemento superiore molte volte

dc <<< '1 1 + p 2 + p'
2
4

Per i numeri negativi utilizzare il prefisso _

dc <<< '_1 p'
-1

È inoltre possibile utilizzare lettere maiuscole da A to F per i numeri compresi tra 10 and 15 e . come un punto decimale

dc <<< 'A.4 p'
10.4

dc usa una precisione abituale, il che significa che la precisione è limitata solo dalla memoria disponibile. Per impostazione predefinita, la precisione è impostata su 0 decimali

dc <<< '4 3 / p'
1

Possiamo aumentare la precisione usando il comando k . 2k userà

dc <<< '2k 4 3 / p'
1.33

dc <<< '4k 4 3 / p'
1.3333

Puoi anche usarlo su più linee

dc << EOF
1 1 +
3 *
p
EOF
6

bc è un preprocessore per dc .

Math usando bc

bc è un linguaggio di calcolo arbitrario di precisione. Potrebbe essere utilizzato in modo interattivo o essere eseguito dalla riga di comando.

Ad esempio, può stampare il risultato di un'espressione:

echo '2 + 3' | bc
5

echo '12 / 5' | bc
2

Per l'aritmetica floating-post, è possibile importare la libreria standard bc -l :

echo '12 / 5' | bc -l
2.40000000000000000000

Può essere usato per confrontare espressioni:

echo '8 > 5' | bc
1

echo '10 == 11' | bc
0

echo '10 == 10 && 8 > 3' | bc
1

Matematica utilizzando le funzionalità di bash

Il calcolo aritmetico può anche essere fatto senza coinvolgere altri programmi come questo:

Moltiplicazione:

echo $((5 * 2))
10

Divisione:

echo $((5 / 2))
2

Modulo:

echo $((5 % 2))
1

potenza:

echo $((5 ** 2))
25

Matematica usando expr

expr o Evaluate expressions valuta un'espressione e scrive il risultato sullo standard output

Aritmetica di base

expr 2 + 3
5

Quando si moltiplica, è necessario sfuggire al segno *

expr 2 \* 3
6

Puoi anche usare le variabili

a=2
expr $a + 3
5

Tieni presente che supporta solo numeri interi, quindi espressioni come questa

expr 3.0 / 2

genererà un errore expr: not a decimal number: '3.0' .

Supporta l'espressione regolare per abbinare i modelli

expr 'Hello World' : 'Hell\(.*\)rld'
o Wo

Oppure trova l'indice del primo carattere nella stringa di ricerca

Questo genererà expr: syntax error su Mac OS X , perché usa BSpr expr che non ha il comando index, mentre expr su Linux è generalmente GNU expr

expr index hello l
3

expr index 'hello' 'lo'
3


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow