L'expansion arithmétique dont vous avez probablement besoin est la suivante:
a=$(( 1+2*k ))
En fait, vous n'avez pas besoin d'utiliser une variable:
for k in {0..49}; do
echo "$(( 1 + 2*k ))"
done
Ou la variable de comptage pourrait être déplacée dans une for ((…))
boucle:
for (( k=0;k<50;k++ )); do
a=$(( 1+2*k ))
printf '%s\n' "$a"
done
pour ((…)) boucle
Et, dans ce cas, l'expansion arithmétique pourrait également être déplacée à l'intérieur de la boucle for:
for (( k=0 ; a=1+2*k , k<50 ; k++)); do
printf '%s\n' "$a"
done
Ou, pour obtenir toutes les valeurs d'un tableau:
for (( k=0 ; a[k]=1+2*k , k<49 ; k++ )); do :; done
printf '%s\n' "${a[@]}"
Pas de formule
Mais probablement le moyen le plus court d'éviter toute expansion arithmétique est d'incrémenter une variable deux fois:
for (( k=0,a=1 ; k<50 ; k++,a++,a++ )); do
printf '%s\n' "$a"
done
Ou, encore plus simple, utilisez simplement seq:
seq 1 2 100