No bash, um não "converte um argumento em um inteiro para realizar aritmética". No bash, as variáveis são tratadas como inteiro ou string dependendo do contexto.
Para realizar a aritmética, você deve chamar o operador de expansão aritmética $((...))
. Por exemplo:
$ a=2
$ echo "$a + 1"
2 + 1
$ echo "$(($a + 1))"
3
ou geralmente preferido:
$ echo "$((a + 1))"
3
Você deve estar ciente de que o bash (ao contrário do ksh93, zsh ou yash) executa somente a aritmética inteiro . Se você tiver números de ponto flutuante (números com decimais), existem outras ferramentas para ajudar. Por exemplo, use bc
:
$ b=3.14
$ echo "$(($b + 1))"
bash: 3.14 + 1: syntax error: invalid arithmetic operator (error token is ".14 + 1")
$ echo "$b + 1" | bc -l
4.14
Ou você pode usar um shell com suporte aritmético de ponto flutuante ao invés de bash:
zsh> echo $((3.14 + 1))
4.14