Hvordan øke en variabel i bash?

Jeg har prøvd å inkrementere en numerisk variabel ved å bruke både var=$var+1 og var=($var+1) uten å lykkes. Variabelen er et tall, selv om bash ser ut til å lese den som en streng.

Bash versjon 4.2.45 (1) -utgivelse (x86_64-pc-linux-gnu) på Ubuntu 13.10.

Løsning

Det er mer enn én måte å inkrementere en variabel i bash, men det du prøvde er ikke riktig.

Du kan for eksempel bruke aritmetisk ekspansjon:

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

Eller du kan bruke let:

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

Se også: http://tldp.org/LDP/abs/html/dblparens.html.

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

Aritmetikk i bash bruker $((...)) syntaks.

Kommentarer (1)

Det er også dette:

var=`expr $var + 1`

Legg nøye merke til mellomrommene og også ` er ikke '

Mens Radu&# 39s svar og kommentarene er uttømmende og veldig nyttige, er de bash-spesifikke. Jeg vet at du spurte spesifikt om bash, men jeg trodde jeg' d rør inn siden jeg fant dette spørsmålet da jeg var ute etter å gjøre det samme ved hjelp av sh i busybox under uCLinux. Dette bærbare utover bash.

Kommentarer (2)