我想运行一个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
答案 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│
└────────────┴─────────────────────┴─────┘