S'il s'agit en fait de mathématiques, et plus précisément s'il s'agit d'une simple arithmétique de nombres entiers, vous pouvez utiliser exactement le format que vous avez :
$ var=$((1+1))
$ echo "$var"
2
Il en va de même s'il s'agit d'une commande. Par exemple, des calculs un peu plus compliqués peuvent être effectués en passant par la commande bc
:
## simple integer math works
$ echo $((3 * 2))
6
## fractions fail
$ echo $((1.3 * 2))
bash: 1.3 * 2: syntax error: invalid arithmetic operator (error token is ".3 * 2")
## bc works
$ echo "1.3 * 2" | bc
2.6
Donc, pour stocker cela dans une variable, il suffit d'utiliser la norme substitution de commande :
$ var=$(echo "1.3 * 2" | bc)
$ echo "$var"
2.6
Enfin, vous disposez également de la eval
(voir help eval
en bash
) :
$ help eval
eval: eval [arg ...]
Execute arguments as a shell command.
Combine ARGs into a single string, use the result as input to the shell,
and execute the resulting commands.
Exit Status:
Returns exit status of command or success if command is null.