명령 줄 JavaScript 입력 인수 문제가 Gedit에서 JavaScript를 조정하는 동안 문제

StackOverflow https://stackoverflow.com/questions/1428428

문제

Gedit에서 즉시 JavaScript 파일을 최소화하고 싶습니다. 외부 도구 옵션을 통해 시도했습니다 jsmin.js 스크립트. SpiderMonkey 엔진이 설치되어 있습니다. 나는 저장했다 jsmin.js 파일 /home/mushex/use/js/jsmin.js 이름이 지정된 새 JS 파일을 만들었습니다 jsmin-low.js 내용이있는 동일한 디렉토리에서

#!/usr/bin/js 

load('/home/mushex/use/js/jsmin.js');

var body = arguments[0],
    result = jsmin('', body, 1);
if (result) {
    print(result);
} else {
    print(body);
}

정의되지 않은 인쇄. 디버깅의 경우 인수 인쇄 작업에서만 수행하도록 스크립트를 변경했으며 입력이 NULL (정의되지 않은)임을 보았습니다. 디버깅을위한 파일 소스였습니다

#!/usr/bin/js 
print(arguments[0]);

그러나 명령 줄에서 실행하면 출력이 정확합니다. Gedit을 통해 다른 JS 명령 줄 도구가 정상적으로 작동합니다. 내 입력 인수가 통과하지 않는 이유를 방황합니다.

다음은 Gedit 에서이 도구에 대해 설정 한 설정입니다.

설정 http://imagebin.org/index.php?mode=image&id=63960

도움을 주셔서 감사합니다. 감사합니다.

도움이 되었습니까?

해결책

문제는 GEDIT가 명령 줄 인수가 아니라 문서를 프로그램의 표준 입력에 보내고 있다는 것입니다. Spidermonkey 쉘은 a readline() Stdin에서 줄을 읽는 기능이지만 EOF에 도달 할 때 알 수있는 방법이 없습니다.

SpiderMonkey를 컴파일하는 경우 File 지원, 당신은 아마 그것을 할 수 있지만 나는 그것을 시도한 적이 없습니다.

당신이 사용하는 경우 코뿔소 쉘, 당신은 다음과 같이 직접 Java 클래스를 사용할 수 있습니다.

function readStdin() {
    var stdin = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.System["in"]));
    var lines = [];
    var line;
    while ((line = stdin.readLine()) !== null) {
        lines.push(line);
    }
    return lines.join("\n");
}

var body = readStdin();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top