web-dev-qa-db-fra.com

Comment convertir une chaîne en entier sous UNIX

J'ai d1="11" et d2="07". Je veux convertir d1 et d2 en nombres entiers et effectuer d1-d2. Comment puis-je faire cela sous UNIX?

d1 - d2 renvoie actuellement "11-07" comme résultat pour moi.

22
qwarentine

La solution standard:

 expr $d1 - $d2

Vous pouvez aussi faire:

echo $(( d1 - d2 ))

mais attention, ceci traitera 07 comme un nombre octal! (si 07 est identique à 7, mais 010 est différent de 10).

37
William Pursell

N'importe lequel d'entre eux fonctionnera à partir de la ligne de commande Shell. bc est probablement votre solution la plus simple.

Utiliser bc :

$ echo "$d1 - $d2" | bc

Utiliser awk:

$ echo $d1 $d2 | awk '{print $1 - $2}'

Utiliser Perl:

$ Perl -E "say $d1 - $d2"

Utiliser Python:

$ python -c "print $d1 - $d2"

tout retour

4
15
Levon
let d=d1-d2;echo $d;

Cela devrait aider.

0
mykeaka