我想制作一个“包装器”脚本,该脚本将自动执行对系统文件的一些命令。我想运行命令A以获取输出,然后使用它来运行命令B。
在这里我被困住了:
protected void Page_Load(object sender, EventArgs e)
{
if(Request.QueryString.Contains("showError") && Request.QueryString["showError"].ToLowerCase() == "true")
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Account not recognised.')", true);
}
}
任何帮助将不胜感激!
答案 0 :(得分:2)
您可以使用async / await链接某些函数,并将一个命令的输出传递给另一个命令
const {spawn} = require('child_process');
async function exec1() {
const child = spawn('ls');
let ret = '';
for await (const data of child.stdout) {
ret += data;
}
return ret;
}
async function exec2(out) {
console.log(out);
const child = spawn('ls');
let ret = '';
for await (const data of child.stdout) {
ret += data;
}
console.log(ret);
}
exec1()
.then(exec2);
或根据需要将第一个函数的值存储到变量中
let output;
exec1()
.then(out => {
output = out;
exec2(out);
});
答案 1 :(得分:0)
我不确定您的真正需求。但是子进程可能具有stderr
,stdin
,stdout
流。您可以通过pipe()方法链接流。
streamA.pipe(streamB)
这意味着来自streamA
的数据流入streamB
。
已更新:
const { spawn } = require(“child_process”)
const ls = spawn(“ls”)
ls.stdout.pipe(process.stdout)
process.stdout
是您的应用退出到控制台的方式。
ls | grep index
: const { spawn } = require(“child_process”)
const ls = spawn(“ls”)
const grep = spawn(“grep”, [“index”])
ls.stdout.pipe(grep.stdin)
grep.stdout.pipe(process.stdout)
const {createWriteStream} = require(“fs”)
const write = createWriteStream(“./write-here.md”)
process.stdout.pipe(write)
现在您可以输入控制台。所有键入的符号将存储在“ write-here.md”文件中。