Comment incrémenter une variable en bash ?

J'ai essayé d'incrémenter une variable numérique en utilisant à la fois var=$var+1 et var=($var+1) sans succès. La variable est un nombre, bien que bash semble la lire comme une chaîne de caractères.

Bash version 4.2.45(1)-release (x86_64-pc-linux-gnu) sur Ubuntu 13.10.

Solution

Il y a plus d'une façon d'incrémenter une variable en bash, mais ce que vous avez essayé n'est pas correct.

Vous pouvez utiliser par exemple l'expansion arithmétique :

var=$((var+1))
((var=var+1))
((var+=1))
((var++))

Ou vous pouvez utiliser let :

let "var=var+1"
let "var+=1"
let "var++"

Voir aussi : http://tldp.org/LDP/abs/html/dblparens.html.

Commentaires (14)
var=$((var + 1))

L'arithmétique dans bash utilise la syntaxe $((...)).

Commentaires (1)

Il y a aussi ça :

var=`expr $var + 1`

Notez bien les espaces et aussi que ` n'est pas '.

Bien que les réponses de Radu et les commentaires soient exhaustifs et très utiles, ils sont spécifiques à bash. Je sais que vous avez posé une question spécifique à propos de bash, mais j'ai pensé que je pourrais intervenir puisque j'ai trouvé cette question lorsque j'ai cherché à faire la même chose en utilisant sh dans busybox sous uCLinux. Ce portable va au-delà de bash.

Commentaires (2)