execline
Software
skarnet.org

# The `dollarat` program

`dollarat` prints the positional parameters of an execline script.

## Interface

         dollarat [ -n ] [ -0 | -d delimchar ]

- `dollarat` reads the number n of "positional parameters" in the `#` environment variable. If that variable is not set or does not contain a valid n, `dollarat` exits 100.
- `dollarat` prints the value of the `1` environment variable, then delimchar, then the value of the `2` environment variable... and so on until `n`. If one of these variables is not set, `dollarat` exits 100.
- If everything runs OK, `dollarat` exits 0. This makes it one of the rare "exiting" execline commands.

## Options

- `-n` : chomp. Do not print the last delimchar.
- `-d` delimchar : use the character delimchar as separator between the arguments. Default: `\n`. If delimchar has more than one character, only the first one is used. If delimchar is the empty string, then `dollarat` will output the positional parameters as a sequence of netstrings (and the `-n` option will be ignored).
- `-0` : use the null character as separator. If this option and the `-d` option are given concurrently, the rightmost one wins. Warning: `-0` should only be used to feed data to programs that know how to handle null-separated lists.

## Notes

- You can use `dollarat -d ""` along with the forbacktickx command to reliably loop over the positional parameters:

       #!/command/execlineb
       forbacktickx -d "" ARG { dollarat -d "" }
       dosomething $ARG

  will call `dosomething` in turn on each argument to the script. That will work even if those arguments contain spaces, newlines, or other fancy characters.
- Alternatively, instead of encoding data into a netstring, you can use a null-separated list, which will work the same way:

       #!/command/execlineb
       forbacktickx -0 ARG { dollarat -0 }
       dosomething $ARG