Bashの範囲を反復する方法は
for i in {0..10}; do echo $i; done
ステップでシーケンスを反復処理するための構文は何ですか?たとえば、上記の例では偶数のみを取得します。
やりたい
for i in `seq 0 2 10`; do echo $i; done
(もちろんseq 0 2 10
はそれ自体で同じ出力を生成します)。
seq
は浮動小数点数(たとえば、seq .5 .25 3.5
)を許可しますが、bashのブレース展開では整数しか許可されないことに注意してください。
Bash 4のブレース展開にはステップ機能があります:
for {0..10..2}; do
..
done
Bash 2/3(Cスタイルのforループ、上記の回答を参照)であろうとBash 4であろうと、「seq」コマンドよりも何かを好むでしょう。
特別なプロセスなしのPure Bash:
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
> 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