Rozbudowa arytmetyczna, której prawdopodobnie potrzebujesz, jest następująca:
a=$(( 1+2*k ))
W rzeczywistości nie musisz używać zmiennej:
for k in {0..49}; do
echo "$(( 1 + 2*k ))"
done
Lub zmienną zliczającą można przenieść do for ((…))pętli:
for (( k=0;k<50;k++ )); do
a=$(( 1+2*k ))
printf '%s\n' "$a"
done
dla pętli
W takim przypadku rozszerzenie arytmetyczne można również przenieść do wewnątrz pętli for:
for (( k=0 ; a=1+2*k , k<50 ; k++)); do
printf '%s\n' "$a"
done
Lub, aby uzyskać wszystkie wartości w tablicy:
for (( k=0 ; a[k]=1+2*k , k<49 ; k++ )); do :; done
printf '%s\n' "${a[@]}"
Bez formuły
Ale prawdopodobnie najkrótszym sposobem uniknięcia ekspansji arytmetycznej jest dwukrotne zwiększenie zmiennej:
for (( k=0,a=1 ; k<50 ; k++,a++,a++ )); do
printf '%s\n' "$a"
done
Lub, jeszcze prościej, po prostu użyj seq:
seq 1 2 100