是否可以在 Scala Ammonite shell 中嵌套命令调用?

Is it possible to nest command calls in the Scala Ammonite shell?

我正在尝试将典型的 UNIX 命令 jmap -heap $(pgrep java) 转换为 Ammonite-Shell 的命令。

我目前的尝试:%'jmap("-heap", %'pgrep("java"))

我收到错误 SyntaxError: found "%'jmap(\"-heap\", %'pg", expected "while" | ... 这似乎表明对 pgrep 的内部调用实际上并未转换为命令调用,只是作为字符串传入。

在 Ammonite 中,单个 % 产生一个子进程并打印出它的结果。为了访问命令输出,您需要使用 %% 运算符,这将 return CommandResult 对象。该对象包含 out 字段,该字段是其输出流。

你可以这样嵌套:

%jmap("-heap", (%%pgrep("java")).out.lines.take(1))