在bash中遍历一个范围的方法是
for i in {0..10}; do echo $i; done
使用步骤对序列进行迭代的语法是什么?比如说,在上面的例子中,我只想得到偶数。
I'd do
for i in `seq 0 2 10`; do echo $i; done
(though of course seq 0 2 10 will produce the same output on its own).
seq 0 2 10
Note that seq allows floating-point numbers (e.g., seq .5 .25 3.5) but bash's brace expansion only allows integers.
seq
seq .5 .25 3.5
#!/bin/bash for i in $(seq 1 2 10) do echo "skip by 2 value $i" done
Pure Bash, without an extra process:
for (( COUNTER=0; COUNTER<=10; COUNTER+=2 )); do echo $COUNTER done
Bash 4's brace expansion has a step feature:
for {0..10..2}; do .. done
No matter if Bash 2/3 (C-style for loop, see answers above) or Bash 4, I would prefer anything over the 'seq' command.
$ 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 1,2,3,4
brace expansion {m..n..s} is more efficient than seq. AND it allows a bit of output formatting:
$ echo {0000..0010..2} 0000 0002 0004 0006 0008 0010
which is useful if one numbers e.g. files and want's a sorted output of 'ls'.