Hoe een variabele verhogen in bash?

Ik heb geprobeerd om een numerieke variabele te verhogen met zowel var=$var+1 als var=($var+1) zonder succes. De variabele is een getal, hoewel bash het lijkt te lezen als een string.

Bash versie 4.2.45(1)-release (x86_64-pc-linux-gnu) op Ubuntu 13.10.

Oplossing

Er is meer dan één manier om een variabele te verhogen in bash, maar wat je probeerde is niet correct.

Je kunt bijvoorbeeld aritmetische uitbreiding gebruiken:

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

Of je kunt let gebruiken:

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

Zie ook: http://tldp.org/LDP/abs/html/dblparens.html.

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

Rekenkunde in bash gebruikt de $((...)) syntaxis.

Commentaren (1)

Er is ook nog dit:

var=`expr $var + 1`

Let goed op de spaties en ook ` is niet '

Hoewel Radu's antwoorden, en de commentaren, uitputtend en zeer behulpzaam zijn, zijn ze bash-specifiek. Ik weet dat je specifiek naar bash hebt gevraagd, maar ik dacht dat ik'meespiegelde omdat ik deze vraag vond toen ik op zoek was om hetzelfde te doen met sh in busybox onder uCLinux. Dit gaat verder dan bash.

Commentaren (2)