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.
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++"
var=$((var + 1))
Aritmetikk i bash bruker $((...))
syntaks.
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.