web-dev-qa-db-ja.com

bashのステップnで範囲を生成する方法は? (増分のある数字のシーケンスを生成します)

Bashの範囲を反復する方法は

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

ステップでシーケンスを反復処理するための構文は何ですか?たとえば、上記の例では偶数のみを取得します。

131
SilentGhost

やりたい

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

(もちろんseq 0 2 10はそれ自体で同じ出力を生成します)。

seqは浮動小数点数(たとえば、seq .5 .25 3.5)を許可しますが、bashのブレース展開では整数しか許可されないことに注意してください。

183
chaos

Bash 4のブレース展開にはステップ機能があります:

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

Bash 2/3(Cスタイルのforループ、上記の回答を参照)であろうとBash 4であろうと、「seq」コマンドよりも何かを好むでしょう。

97
TheBonsai

特別なプロセスなしのPure Bash:

for (( COUNTER=0; COUNTER<=10; COUNTER+=2 )); do
    echo $COUNTER
done
57
Fritz G. Mehner
#!/bin/bash
for i in $(seq 1 2 10)
do
   echo "skip by 2 value $i"
done
18
z -
> seq 4
1
2
3
4

> seq 2 5
2
3
4
5

> seq 4 2 12
4
6
8
10
12

> seq -w 4 2 12
04
06
08
10
12

> seq -s, 4 2 12
4,6,8,10,12
3
Mir-Ismaili