如何将STDIN数据提供给通过jconsole.exe运行的J脚本?

时间:2015-09-21 20:36:47

标签: j

我想运行一个J脚本,提供STDIN,并使用STDOUT接收脚本的输出。

我觉得我错过了一些非常明显的东西,但是help pages on using jconsole.exe是。 。 。简洁。

我天真的想法是我可以在cmd.exe shell中运行以下命令来提供STDIN:

({(2015-09-17T09:02:00.000-07:00,1),(2015-09-17T19:02:00.000-07:00,1)})
({(2015-09-15T22:12:00.000-07:00,2)})
({(2015-09-15T23:11:00.000-07:00,3)})
({(2015-09-16T21:02:00.000-07:00,4)})
({(2015-09-17T08:02:00.000-07:00,5),(2015-09-17T09:02:00.000-07:00,5)})

虽然在没有尝试STDIN的情况下有效:

jconsole.exe script.ijs inputstring

C:\..\bin>jconsole.exe "C:\path\no-input-script.ijs" success C:\..\bin> 文件如下:

no-input-script.ijs

我有以下stdout 'success' exit '' 文件:

script-with-input.ijs

当我运行以下命令时,系统挂起:

input =: stdin ''
stdout 'input was ' , input
exit ''

当我按 Ctrl + C 时,脚本退出并留下以下内容:

C:\..\bin>jconsole.exe "C:\path\script-with-input.ijs" xyz

1 个答案:

答案 0 :(得分:4)

stdin从STDIN读取输入直到EOF(通常在* nix ^ D中)。所以你的'script-with-input.ijs'等待用户输入或管道。

c:>jconsole.exe "script-with-input.ijs" hello
this is user input
^D
input was this is user input

相反,您尝试做的是读取命令的参数。这些存储在ARGV中:

NB. script-with-input.ijs
input =: ARGV
echo input
exit''

然后:

c:>jconsole.exe "script-with-input.ijs" hello
┌────────────┬─────────────────────┬─────┐
│jconsole.exe│script-with-input.ijs│hello│
└────────────┴─────────────────────┴─────┘