2fdd795b24
FossilOrigin-Name: d7f6ad61844895e8b68fac3249cb5731d4480045110fe56f85d370079a8efa39
51 lines
1.2 KiB
Text
51 lines
1.2 KiB
Text
# Unix Scripting
|
|
|
|
RETRO on Unix hosts is designed to play well with scripting.
|
|
|
|
Shebang
|
|
|
|
To run an entire program directly, start the file with the standard
|
|
shebang and make the file executable:
|
|
|
|
#!/usr/bin/env retro
|
|
|
|
This requires the retro binary to be in your path.
|
|
|
|
## Arguments
|
|
|
|
RETRO provides several words in the `script:` namespace for accessing
|
|
command line arguments.
|
|
|
|
The number of arguments can be accessed via `script:arguments`. This
|
|
will return a number with the arguments, other than the script name.
|
|
|
|
script:arguments '%n_arguments_passed\n s:format s:put
|
|
|
|
To retreive an argument, pass the argument number to `script:get-argument`:
|
|
|
|
script:arguments [ I script:get-argument s:put nl ] indexed-times
|
|
|
|
And to get the name of the script, use `script:name`.
|
|
|
|
script:name s:put
|
|
|
|
## Mixing
|
|
|
|
With use of the Unu literate format, it's possible to mix both shell
|
|
and RETRO code into a single script. As an example, this is a bit of
|
|
shell that runs itself via retro for each .retro file in the current
|
|
directory tree:
|
|
|
|
#!/bin/sh
|
|
|
|
# shell part
|
|
find . -name '*.retro' -print0 | xargs -0 -n 1 retro $0
|
|
exit
|
|
|
|
# retro part
|
|
|
|
This will scan a source file and do something with it:
|
|
|
|
~~~
|
|
... do stuff ...
|
|
~~~
|