Las formas más conocidas para realizar operaciones aritméticas con bash son mediante let y expr. Todos sabemos que son un poco "pijoteras" en cuanto a sintaxis. El otro día trasteando por ahí encontré una forma a mi juicio bastante más sencilla.
# Forma tradicional con let
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo "Contador vale: $CONTADOR"
let "CONTADOR += 1"
done
# Con expr
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo "$CONTADOR"
CONTADOR=$(expr $CONTADOR + 1)
done
# Forma alternativa
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo "$CONTADOR"
CONTADOR=$((CONTADOR + 1))
done
# Esta última forma, permite usar o no usar dentro de la expresión '$' para la variable,
# También se puede poner sin espacios, es decir, esto también lo ejecutará
...
CONTADOR=$(($CONTADOR+1))
...
# Por último señalar que también permite el uso de otros operadores como son división,
# módulo y potencia:
CONTADOR=4
echo "Contador= $CONTADOR"
CONTADOR=$((4**5))
echo "Contador= $CONTADOR"
CONTADOR=$((CONTADOR%5))
echo "Contador= $CONTADOR"
CONTADOR=$((9/3))
echo "Contador= $CONTADOR"
# Esto daría los siguientes resultados.
Contador= 4
Contador= 1024
Contador= 4
Contador= 3
# Personalmente esta forma de hacer operaciones en bash, me parece más legible y con menos
# texto que las anteriores, por lo que es la que estoy usando.