Bash
Matematica
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 perdc
.
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