-
Para aritmética,
expr
é arcaico. Não use isso. * -
$((...))
e((...))
são muito semelhantes. Ambos fazem apenas cálculos inteiros. A diferença é que$((...))
retorna o resultado do cálculo e((...))
não. Assim$((...))
é útil emecho
declarações:$ a=2; b=3; echo $((a*b)) 6
((...))
é útil quando você deseja atribuir uma variável ou definir um código de saída:$ a=3; b=3; ((a==b)) && echo yes yes
-
Se você quiser cálculos de ponto flutuante, use
bc
ouawk
:$ echo '4.7/3.14' | bc -l 1.49681528662420382165 $ awk 'BEGIN{print 4.7/3.14}' 1.49682
* Como um aparte, expr
continua sendo útil para manipulação de strings quando globs não são boas o suficiente e um método POSIX é necessário para manipular expressões regulares.