代码之家  ›  专栏  ›  技术社区  ›  SilentGhost

如何在bash中用步骤n生成一个范围?(以增量生成数字序列)

  •  109
  • SilentGhost  · 技术社区  · 15 年前

    在bash中迭代一个范围的方法是

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

    用步骤迭代序列的语法是什么?例如,我只想在上面的示例中得到偶数。

    4 回复  |  直到 6 年前
        1
  •  161
  •   Rob Bednark Bohdan    9 年前

    我愿意

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

    (当然了 seq 0 2 10 将单独产生相同的输出)。

    注意 seq 允许浮点数(例如, seq .5 .25 3.5 )但是bash的大括号扩展只允许整数。

        2
  •  86
  •   TheBonsai    15 年前

    猛击4 的大括号扩展具有一个步骤功能:

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

    无论是bash 2/3(c-style for loop,请参阅上面的答案)还是bash 4,我都希望使用任何内容而不是'seq'命令。

        3
  •  53
  •   SilentGhost    15 年前

    纯bash,无需额外处理:

    for (( COUNTER=0; COUNTER<=10; COUNTER+=2 )); do
        echo $COUNTER
    done
    
        4
  •  16
  •   z -    15 年前
    #!/bin/bash
    for i in $(seq 1 2 10)
    do
       echo "skip by 2 value $i"
    done