Арифметичне розширення, яке вам, мабуть, потрібно, це:
a=$(( 1+2*k ))
Насправді, вам не потрібно використовувати змінну:
for k in {0..49}; do
echo "$(( 1 + 2*k ))"
done
Або змінну підрахунку можна перемістити до for ((…))
циклу:
for (( k=0;k<50;k++ )); do
a=$(( 1+2*k ))
printf '%s\n' "$a"
done
для ((…)) петлі
І в цьому випадку арифметичне розширення також може бути переміщене всередину циклу for:
for (( k=0 ; a=1+2*k , k<50 ; k++)); do
printf '%s\n' "$a"
done
Або, щоб отримати всі значення в масиві:
for (( k=0 ; a[k]=1+2*k , k<49 ; k++ )); do :; done
printf '%s\n' "${a[@]}"
Формули немає
Але, мабуть, найкоротший спосіб уникнути арифметичного розширення - збільшити зміну в два рази:
for (( k=0,a=1 ; k<50 ; k++,a++,a++ )); do
printf '%s\n' "$a"
done
Або, що ще простіше, просто використовуйте seq:
seq 1 2 100