I have d1="11"
e d2="07"
. Voglio convertire d1
e d2
in numeri interi ed eseguire d1-d2
. Come posso farlo in UNIX?Come convertire la stringa in numero intero in UNIX
d1 - d2
restituisce attualmente "11-07"
come risultato per me.
I have d1="11"
e d2="07"
. Voglio convertire d1
e d2
in numeri interi ed eseguire d1-d2
. Come posso farlo in UNIX?Come convertire la stringa in numero intero in UNIX
d1 - d2
restituisce attualmente "11-07"
come risultato per me.
La soluzione standard:
expr $d1 - $d2
È anche possibile fare:
echo $((d1 - d2))
ma fate attenzione che questo tratterà 07
come un numero ottale! (quindi 07
corrisponde a 7
, ma 010
è diverso da 10
).
Dato che bash ha la sintassi per specificare la base numerica, perché non dimostrarlo qui (anche se con un avvertimento sulla portabilità)? –
Puoi convertire base: 'echo $ ((d1-10 # $ d2))' Attenzione: non è la stessa di 'echo $ ((d1-10 # d2))' – Luchostein
Usare questo:
#include <stdlib.h>
#include <string.h>
int main()
{
const char *d1 = "11";
int d1int = atoi(d1);
printf("d1 = %d\n", d1);
return 0;
}
ecc
qwarentine significava shell Linux. –
Domanda per unix shell – rashok
Qualsiasi di questi lavoreranno dalla riga di comando shell. bc
è probabilmente la soluzione più semplice in assoluto.
Utilizzando bc:
$ echo "$d1 - $d2" | bc
Utilizzando awk
:
$ echo $d1 $d2 | awk '{print $1 - $2}'
Utilizzando perl
:
$ perl -E "say $d1 - $d2"
Utilizzando Python
:
$ python -c "print $d1 - $d2"
restituiscono tutte
4
Non sono sicuro se si tratti di un bug o di una funzione di 'expr',' awk', 'bc' e' dc', ma tutti questi strumenti gestiscono il caso 'd1 = 09' trattando 09 come valore decimale 9. Tuttavia, 'perl' e' python' lo trattano come un errore di sintassi. Si ottengono risultati diversi per il caso 'd1 = 010' –
@WilliamPursell Interessante .. Dovrò esaminare questo, informazioni utili, grazie. – Levon
Puoi farlo subito con puro Bash: 'echo $ ((d1-10 # $ d2))' – Luchostein
let d=d1-d2;echo $d;
Questo dovrebbe aiutare.
Questo è effettivamente lo stesso come 'd = $ ((d1 - d2)); echo "$ d" ', come coperto dalla risposta accettata (con la stessa avvertenza che i numeri prefissati da' 0' sono interpretati come _octals_). – mklement0
Volevi questo dalla riga di comando o programmaticamente? – Levon