Как производить диапазон с шагом n в bash? (сгенерировать последовательность чисел с приращениями) Способ перебора диапазона в bash - for i in {0..10}; do echo $i; done Каким будет синтаксис для итерации по последовательности с шагом? Скажем, я хотел бы получить только четное число в приведенном выше примере. Ответ 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
Ответ 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