-
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 emechodeclaraçõ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
bcouawk:$ 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.