Muhtemelen ihtiyacınız olan aritmetik genişleme şudur:
a=$(( 1+2*k ))
Aslında, bir değişken kullanmanıza gerek yoktur:
for k in {0..49}; do
echo "$(( 1 + 2*k ))"
done
Veya sayma değişkeni bir for ((…))
döngüye taşınabilir :
for (( k=0;k<50;k++ )); do
a=$(( 1+2*k ))
printf '%s\n' "$a"
done
döngü için
Ve bu durumda, aritmetik genişleme for döngüsünün içine de taşınabilir:
for (( k=0 ; a=1+2*k , k<50 ; k++)); do
printf '%s\n' "$a"
done
Veya, bir dizideki tüm değerleri almak için:
for (( k=0 ; a[k]=1+2*k , k<49 ; k++ )); do :; done
printf '%s\n' "${a[@]}"
Formül yok
Ancak, herhangi bir aritmetik genişlemeyi önlemenin en kısa yolu, bir değişkeni iki kez artırmaktır:
for (( k=0,a=1 ; k<50 ; k++,a++,a++ )); do
printf '%s\n' "$a"
done
Veya daha da basit, sadece seq kullanın:
seq 1 2 100