1. shell
    1. Introduction
    2. run
    3. run*
    4. capture
    5. shell
    6. execute
    7. shell-verbose
    8. Authors
    9. Repository
    10. License
    11. Version History



Invoke shell commands


[syntax] (run COMMAND ...)

Invokes each COMMAND as a shell command. COMMAND may be of any data type and is flattened and converted to a string. COMMAND is also implicitly quasiquoted so subexpressions may be computed at run-time by unquoting them. Returns an unspecified value.

Note that expressions and subforms are not automatically escaped, so

 (run (ls a "b c"))

will pass 3 arguments to the ls command.


[syntax] (run* COMMAND ...)

Similar to run but returns the return status of each command as multiple result values.


[syntax] (capture COMMAND ...)

Similar to run but captures everything written by the subprocess to stdout and returns the output as a string. In case the command fails, an empty string is returned (there is currently no way to distinguish between a failed command and one that produces no output).


[syntax] (shell COMMAND ...)

Returns a procedure that, when invoked will run the given shell commands. The procedure accepts the same keyword arguments as execute. Note that unquoted subexpressions in the command-list are evaluated when the procedure is invoked, not when it is created.


[procedure] (execute COMMANDLIST #!key status verbose)

Converts COMMANDLIST to a string by flattening the list-structure of each command and interspersing it with whitespace (" ") and invokes it as a shell command. If status is given and true, then execute returns the exit status, with one result value for each element in COMMANDLIST. If verbose is given and true, it overrides the current setting of shell-verbose.

This is the underlying primitive used by run[*] and shell.


[parameter] shell-verbose

When true, shell commands invoked via run, run* and shell are displayed on the port given by (current-output-port).


Felix Winkelmann


This egg is hosted on the CHICKEN Subversion repository:


If you want to check out the source code repository of this egg and you are not familiar with Subversion, see this page.


 This code is in the public domain

Version History

ported to CHICKEN 5
added capture
initial version