如何在bash中生成步骤n的范围? (用增量生成一个数字序列)
在bash中迭代范围的方法是
for i in {0..10}; do echo $i; done
用一个步骤迭代序列的语法是什么? 说,我想在上面的例子中只有偶数。
我会做
for i in `seq 0 2 10`; do echo $i; done
(尽pipe当然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'命令更喜欢什么。
纯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