Conveniently launch a sub-process providing its stdin and collecting its stdout
Passes the given strings to Runtime.exec() to launch a sub-process.
:in may be given followed by a String or byte array specifying input to be fed to the sub-process's stdin. :in-enc option may be given followed by a String, used as a character encoding name (for example "UTF-8" or "ISO-8859-1") to convert the input string specified by the :in option to the sub-process's stdin. Defaults to UTF-8. If the :in option provides a byte array, then the bytes are passed unencoded, and this option is ignored. :out-enc option may be given followed by :bytes, :stream 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. :async If true, returns a map with :out, :err and :proc keys, and the caller is responsible for reading these and the sxit status. :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 and with-sh-dir.
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 (String via platform default encoding)
Sets the directory for use with sh, see sh for details.
Sets the environment for use with sh, see sh for details.