2016-12-30 19 views
1

標準のUNIXコマンドjmap -heap $(pgrep java)Ammonite-Shellのコマンドに変換しようとしています。Scala Ammoniteシェルでコマンド呼び出しをネストすることは可能ですか?

これまでの試み:%'jmap("-heap", %'pgrep("java"))

SyntaxError: found "%'jmap(\"-heap\", %'pg", expected "while" | ...私はpgrepへの内部呼び出しが実際にはコマンド呼び出しとして翻訳されず、文字列として渡されたことを示しているようです。

答えて

2

アンモナイトでは、単一の%がサブプロセスを生成し、その結果を出力します。コマンド出力にアクセスするには%%演算子を使用する必要があります。これはCommandResultオブジェクトを返します。このオブジェクトには、出力のストリームであるoutフィールドが含まれています。

あなたは巣にそれをこのよう次のことができます。

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

が右に見えますが、私は '%%のpgrep( "javaの")' ' ammonite.ops.ShelloutException得取得しています:CommandResult 1 '、と思われます奇妙な;私がtcshでそれを実行すると、私は終了コード0を得る。また、 '%pgrep(" java ")'だけを実行するときに 'InteractiveShelloutException'を取得します。これはアンモナイトからの非ゼロ終了ステータスを確認するようです。 – bbarker

+0

これは奇妙なことですが、このサブプロセスはアンモナイトで何かを出力していますか? – adamwy

+0

私は今日それを試して、それは働いた...違いを確認していないが、おそらくそれはアクセスできなかったJavaプロセスに接続しようとしていた。 – bbarker

関連する問題