execline: the forx command
Keywords: execline command forx

execline
Software
skarnet.org

# The `forx` program

`forx` runs a loop.

## Interface

In an execlineb script:

         forx [ -E | -e ] [ -p | -P maxpar ] [ -o okcodes | -x breakcodes ] variable { args... } loop...

- `forx` reads a block and unquotes it. That block contains a list of args.
- For each argument x in args..., `forx` runs loop as a child process, with variable=x added to its environment.
- `forx` then exits 0.

## Options

- `-o` okcodes : okcodes must be a comma-separated list of exit codes. If loop exits with one of the codes in okcodes, forx will run the following instances of the loop, but if the exit code is not listed in okcodes, forx will exit immediately with an approximation of the same exit code.
- `-x` breakcodes : like the previous option, but with inverted meaning - the listed exit codes are codes that will make forx break the loop and exit, and the unlisted exit codes will make it keep looping.
- `-p` : run in parallel. Do not wait for an instance of loop... to exit before spawning the next one. `forx` will still wait for all instances of loop to terminate before exiting 0. If the `-o` option has been given, `forx` will exit 0 if all of the exit codes are in the values listed in the okcodes list, else it will exit 1. If the `-x` option has been given, `forx` will exit 0 if none of the exit codes are in the values listed in the breakcodes list, else it will exit 1.
- `-e` : no autoimport. This is the default.
- `-E` : autoimport. Instead of spawning loop..., spawn `importas -uSi variable loop...`. This substitutes variable into the command line instead of putting it into the environment.
- `-P` maxpar : similar to `-p`, but run up to maxpar instances in parallel, i.e. never have more than maxpar children at the same time. Minimum is 1.