# for_range>: Repeat tasks for a range

**for_range>** operator runs subtasks multiple times using sets of variables.

This operator exports `${range.from}`, `${range.to}`, and `${range.index}` variables for the subtasks. Index begins from 0.

```
+repeat:
  for_range>:
    from: 10
    to: 50
    step: 10
  _do:
    echo>: processing from ${range.from} to ${range.to}.
    # this will generate 4 tasks:
    #  +range-from=10&to=20:
    #    echo>: processing from 10 to 20.
    #  +range-from=20&to=30:
    #    echo>: processing from 20 to 30.
    #  +range-from=30&to=40:
    #    echo>: processing from 30 to 40.
    #  +range-from=40&to=50:
    #    echo>: processing from 40 to 50.
```

* **for_range>**: object of from, to, and slices or step
This nested object is used to declare a range from **from** to **to**.
Then you divide the range into fixed number of slices using **slices** option, or divide the range by width by **step** option. Setting both slices and step is error.
Examples:


```
  for_range>:
    from: 0
    to: 10
    step: 3
    # this repeats tasks for 4 times (number of slices is computed automatically):
    #  * {range.from: 0, range.to: 3, range.index: 0}
    #  * {range.from: 3, range.to: 6, range.index: 1}
    #  * {range.from: 6, range.to: 9, range.index: 2}
    #  * {range.from: 9, range.to: 10, range.index: 3}
  _do:
    echo>: from ${range.from} to ${range.to}
```

```
  for_range>:
    from: 0
    to: 10
    slices: 3
    # this repeats tasks for 3 times (size of a slice is computed automatically):
    #  * {range.from: 0, range.to: 4, range.index: 0}
    #  * {range.from: 4, range.to: 8, range.index: 1}
    #  * {range.from: 8, range.to: 10, range.index: 2}
  _do:
    echo>: from ${range.from} to ${range.to}
```

* **_parallel**: BOOLEAN | OBJECT
Runs the repeating tasks in parallel.
If `_parallel: {limit: N}` (N is an integer: 1, 2, 3, …) parameter is set,
the number of tasks running in parallel is limited to N.
Note that the tasks in the loop will be running in serial.
Examples:


```
  _parallel: true
```

Examples:

```
  _parallel:
    limit: 2
```

* **_do**: TASKS
Tasks to run.