J脚本中的输入字符串挂起

时间:2014-11-07 21:39:46

标签: input stdin readline j

我用#!

在J for linux中编写脚本

但是脚本挂了。 Control-D脚本回显输入值后。但普通的ENTER只将光标放在新行上。

#!/path/jconsole

a =. 1!:1]3
echo a
exit ''

2 个答案:

答案 0 :(得分:3)

当j处于脚本模式时,您无法读取单行文本,但是您可以通过将{immex短语设置为9!:27来安排在下次j返回到立即执行模式时运行的内容然后使用9!:29将immex位设置为1。这是一个例子:

#!/usr/bin/env j

NB. demo showing how to make a simple repl in j.

readln =: [: (1!:01) 1:
donext =: [: (9!:29) 1: [ 9!:27

main =: verb define
  echo ''
  echo 'main loop. type ''bye'' to exit.'
  echo '--------------------------------'
  while. (s:'`bye') ~: s:<input=:readln'' do.
    echo ".input
  end.
  echo '--------------------------------'
  echo 'loop complete. returning to j.'
  NB. or put (  exit'' ) here to exit j.
)

donext 'main _'

答案 1 :(得分:2)

问题是(1!:1)&3读到文件结束&#34;。在Linux中,按ctrl-D发送EOF信号。

如果这不是您正在寻找的东西,我恐怕除此之外没有其他东西,只有你的丑陋技巧&#34;

a=. shell 'read foo; echo -n $foo'

as(1!:1)&amp; 1仅在会话期间出于某种原因...