Execute shell command forwarding all stdio streams.
exec-sh is a wrapper for child_process.spawn with some improvements:
- Cross platform command execution:
- Windows:
cmd /C COMMAND - others:
sh -c COMMAND
- Windows:
- Forwards all stdio streams to current terminal (by default):
execSh("bash")execsh("echo -n Say: && read i && echo Said:$i")
- stdout and stderr are passed to callback when available
execSh("pwd", console.log)
// JavaScript
execSh("echo hello exec-sh && bash", { cwd: "/home" }, function(err){
if (err) {
console.log("Exit code: ", err.code);
}
});# Terminal output: interactive bash session
hello exec-sh
bash-3.2$ pwd
/home
bash-3.2$ exit 99
exit
Exit code: 99const execSh = require("../");
// run interactive bash shell
execSh("echo lorem && bash", { cwd: "/home" }, (err) => {
if (err) {
console.log("Exit code: ", err.code);
return;
}
// collect streams output
const child = execSh(["bash -c id", "echo lorem >&2"], true,
(err, stdout, stderr) => {
console.log("error: ", err);
console.log("stdout: ", stdout);
console.log("stderr: ", stderr);
});
});const execShPromise = require("exec-sh").promise;
// run interactive bash shell
const run = async () => {
let out;
try {
out = await execShPromise('pwd', true);
} catch (e) {
console.log('Error: ', e);
console.log('Stderr: ', e.stderr);
console.log('Stdout: ', e.stdout);
return e;
}
console.log('out: ', out.stdout, out.stderr);
}
run();Execute shell command forwarding all stdio.
Parameters:
command {String|Array}- The command to run, or array of commands[options] {Object|TRUE}- Options object passed directly tochild_process.spawn, whenTRUEthen{ stdio: null }used[callback] {Function}-callback(err, stdout, stderr)err {Error|NULL}- Error object. Hascodeproperty containing last command exit code when availablestdout {String|NULL}- aggregated stdout orNULLif not availablestderr {String|NULL}- aggregated stderr orNULLif not available
Return Values:
Returns ChildProcess object.
npm test- run testsnpm run jsdoc- build jsdocnpm run dev- run tests continuously
The MIT License (MIT)
