Deno 中的交互式 shell

Posted

技术标签:

【中文标题】Deno 中的交互式 shell【英文标题】:Interactive shell in Deno 【发布时间】:2021-07-14 06:51:14 【问题描述】:

在 python 中,以下行生成一个交互式 shell,我可以像任何终端一样使用它。

os.system("bash");

在此处输入 exit 退出 shell,python 脚本继续执行。

我怎样才能在 Deno 中做这样的事情?

编辑:我最初的问题应该更冗长一些。我的意图不仅仅是运行一个 shell 命令。我想运行一个交互式 shell,它会抓取输入/输出,直到我使用 exit 命令手动退出。 Deno.run(cmd: ["bash"]) 不会这样做。

【问题讨论】:

有Deno.run() 函数可以这样做。 这能回答你的问题吗? How do I run an arbitrary shell command from Deno? 编辑了问题以添加更多详细信息 - Deno.run 不会生成交互式 shell。 【参考方案1】:

您需要等待进程(bash shell)退出。为此,您需要 await process.status()

// run using 
// deno run --allow-run demo.js

const p = Deno.run(
  cmd: ["bash"],
)

const status = await p.status()
console.log(status)

如果你想使用 Deno REPL,那么运行 -

await Deno.run( cmd: ["bash"] ).status()

【讨论】:

以上是关于Deno 中的交互式 shell的主要内容,如果未能解决你的问题,请参考以下文章

交互式shell和非交互式shell,登录shell和非登录shell的区别

shell脚本初识别

在非交互式 shell 中展开别名

Java 的交互式 shell,如 ipython

shell中的交互模式:expect

从 shell 脚本生成交互式 telnet 会话