Подтвердить что ты не робот

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

Способ перебора диапазона в bash -

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

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

4b9b3361

Ответ 1

Я бы сделал

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

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

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

Ответ 2

Bash 4 Расширение скобки имеет ступенчатую функцию:

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

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

Ответ 3

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

for (( COUNTER=0; COUNTER<=10; COUNTER+=2 )); do
    echo $COUNTER
done

Ответ 4

#!/bin/bash
for i in $(seq 1 2 10)
do
   echo "skip by 2 value $i"
done