Próbowałem inkrementować zmienną numeryczną używając zarówno var=$var+1
jak i var=($var+1)
bez powodzenia. Zmienna jest liczbą, choć bash wydaje się czytać ją jako łańcuch.
Bash w wersji 4.2.45(1)-release (x86_64-pc-linux-gnu) na Ubuntu 13.10.
Istnieje więcej niż jeden sposób na inkrementację zmiennej w bashu, ale to, czego próbowałeś, nie jest poprawne.
Możesz użyć na przykład rozszerzenia arytmetycznego:
var=$((var+1))
((var=var+1))
((var+=1))
((var++))
Możesz też użyć let
:
let "var=var+1"
let "var+=1"
let "var++"
Zobacz także: http://tldp.org/LDP/abs/html/dblparens.html.
var=$((var + 1))
Arytmetyka w bashu używa składni $((...))
.
Jest jeszcze to:
var=`expr $var + 1`
Zwróć uwagę na spacje, a także ` nie jest '.
Podczas gdy odpowiedzi Radu'a i komentarze są wyczerpujące i bardzo pomocne, są one specyficzne dla bash. Wiem, że pytałeś konkretnie o bash, ale pomyślałem, że I'd pipe in ponieważ znalazłem to pytanie, gdy szukałem zrobić to samo używając sh w busybox pod uCLinux. To przenośne poza bash.