명령 줄 JavaScript 입력 인수 문제가 Gedit에서 JavaScript를 조정하는 동안 문제
-
07-07-2019 - |
문제
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();