2014-11-07 6 views
5

#으로 Linux 용 J로 스크립트를 작성합니다!J 스크립트의 입력 문자열이 응답하지 않습니다.

하지만 스크립트가 멈 춥니 다. Control-D 스크립트가 입력 된 값을 에코 한 후. 그러나 일반적인 ENTER는 새 줄에 커서를 놓습니다.

#!/path/jconsole 

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

나는 못생긴 트릭을 발견했습니다 :'a =. 쉘 '은 foo를 읽습니다; echo -n $ foo'' –

답변

2

것은 "파일 끝"까지 (1!:1)&3이 읽는 것입니다. 리눅스에서는 ctrl-D를 누르면 EOF 신호가 전송됩니다.

이 없습니다 당신이 찾고있는 무엇을, 난 거기에 다른 아무것도 없다하지만 "추악한 속임수"로

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

이 두려워 (1 :! 1) & 1 만 세션에서 작동 웬일인지 ...

3

j가 스크립트 모드에있는 동안 한 줄의 텍스트를 읽을 수는 없지만 다음 번에 j가 9!:27으로 immex 문구를 설정하여 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 _'