API for shell
clojure-contrib is now deprecated
clojure-contrib is no longer being developed or maintained.
Rather than a single, monolithic, contributions library, Clojure now has
a set of separate libraries for each unit of functionality. The libraries
are in the Clojure GitHub organization at
API documentation of the libraries can be found at
If you're looking for a specific function or namespace from the old
"Where Did Clojure.Contrib Go".
Full namespace name: clojure.contrib.shell
Conveniently launch a sub-process providing to its stdin and
collecting its stdout
Deprecated since clojure-contrib version 1.2
Public Variables and Functions
This library, clojure-contrib, is deprecated. See here for more information.
Usage: (sh & args)
Passes the given strings to Runtime.exec() to launch a sub-process.
:in may be given followed by a String specifying text to be fed to the
:out option may be given followed by :bytes or a String. If a String
is given, it will be used as a character encoding name (for
example "UTF-8" or "ISO-8859-1") to convert the
sub-process's stdout to a String which is returned.
If :bytes is given, the sub-process's stdout will be stored in
a byte array and returned. Defaults to UTF-8.
when followed by boolean true, sh returns a map of
:exit => sub-process's exit code
:out => sub-process's stdout (as byte or String)
:err => sub-process's stderr (as byte or String)
when not given or followed by false, sh returns a single
array or String of the sub-process's stdout followed by its
:env override the process env with a map (or the underlying Java
String if you are a masochist).
:dir override the process dir with a String or java.io.File.
You can bind :env or :dir for multiple operations using with-sh-env