Как произвести ряд с шагом n в Баш? (сгенерируйте последовательность чисел с шагом)


способ итерации по диапазону в bash-это

for i in {0..10}; do echo $i; done

каков будет синтаксис для итерации по последовательности с шагом? Скажем, я хотел бы получить только четное число в приведенном выше примере.

4 104

4 ответа:

Я бы сделал

for i in `seq 0 2 10`; do echo $i; done

(хотя конечно seq 0 2 10 будет производить тот же результат сам по себе).

отметим, что seq позволяет использовать числа с плавающей запятой (например,seq .5 .25 3.5) но расширение скобки Баша позволяет только целые числа.

Баш 4расширение скобки имеет функцию шага:

for {0..10..2}; do
  ..
done

независимо от того, если Bash 2/3 (c-стиль для цикла, см. ответы выше) или Bash 4, я бы предпочел что-нибудь над командой "seq".

чистый Баш, без дополнительного процесса:

for (( COUNTER=0; COUNTER<=10; COUNTER+=2 )); do
    echo $COUNTER
done
#!/bin/bash
for i in $(seq 1 2 10)
do
   echo "skip by 2 value $i"
done