Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
shell
Introduction
Invoke shell commands
run
[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.
run*
[syntax] (run* COMMAND ...)Similar to run but returns the return status of each command as multiple result values.
capture
[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).
shell
[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.
execute
[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.
shell-verbose
[parameter] shell-verboseWhen true, shell commands invoked via run, run* and shell are displayed on the port given by (current-output-port).
Authors
Felix Winkelmann
License
This code is in the public domain
Version History
- 0.3
- added capture
- 0.1
- initial version