>  기사  >  웹 프론트엔드  >  Node.js로 쉘 스크립트를 작성하는 JavaScript [번역]_javascript 기술

Node.js로 쉘 스크립트를 작성하는 JavaScript [번역]_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:49:561362검색

매개변수 액세스
다음 내용을 포함하는 배열인 process.argv를 통해 명령줄 매개변수에 액세스할 수 있습니다.

[ nodeBinary, script, arg0, arg1, ... ]

즉, 첫 번째 매개변수는 process.argv[2]에서 시작하며 다음과 같이 모든 매개변수를 반복할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

process.argv.slice(2).forEach(function (fileName) {
...
})

더 복잡한 매개변수 처리를 원할 경우 Node.js 모듈 nomnom 및 옵티마이저를 살펴보세요. 아래에서는 파일 시스템 모듈을 여러 번 사용할 것입니다.
코드 복사 코드는 다음과 같습니다.

var fs = require('fs')

텍스트 파일 하나 읽기
파일이 그다지 크지 않은 경우 전체 파일을 메모리로 읽어서 문자열에 넣을 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var text = fs.readFileSync(fileName, "utf8")

그러면 분할할 수 있습니다. 이 텍스트를 한 줄로
코드 복사 코드는 다음과 같습니다.

text.split(/r?n /).forEach(function (line) {
// ...
})

대용량 파일의 경우 스트림을 사용할 수 있습니다. 모든 line.mtomis를 반복하려면 Stack Overflow에

Write a text file


fs를 통해 전체 내용을 파일에 쓸 수 있습니다. writeFileSync(fileName, str , 'utf8')
또는 스트림에 증분식으로 문자열을 쓸 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var out = fs.createWriteStream(fileName, { 인코딩: "utf8" })
out.write(str); ( ); // 현재 destroy() 및 destroySoon()과 동일합니다.

크로스 플랫폼 고려 사항

줄 종결자를 결정합니다.
해결 방법 1: 기존 파일을 읽습니다. 문자열로 이동하여 "rn"을 검색하고 찾을 수 없으면 줄 종결자가 "n"인지 확인합니다.

코드 복사 코드는 다음과 같습니다.
var EOL = fileContents.indexOf("rn") >= 0 ? "rn" : "n"

해결 방법 2: 탐지 시스템 플랫폼. 모든 Windows 플랫폼은 64비트 시스템뿐만 아니라 "win32"를 반환합니다.

코드 복사 코드는 다음과 같습니다:
var EOL = (process.platform === 'win32' ? 'rn' : 'n')

경로 처리

파일 시스템 경로를 처리할 때 경로 모듈을 사용할 수 있습니다. 이렇게 하면 올바른 PATH 구분 기호가 사용됩니다(Unix에서는 "/", Windows에서는 ""). 🎜>코드 복사

코드는 다음과 같습니다. var path = require('path') path.join(mydir, "foo" );
스크립트 실행
셸 스크립트 이름이 myscript.js인 경우 다음과 같이 실행할 수 있습니다.

node myscript.js arg1 arg2 ...

Unix의 경우 , 스크립트의 첫 번째 줄에 코드 줄을 추가하여 이 스크립트를 해석하는 데 어떤 프로그램을 사용해야 하는지 운영 체제에 알릴 수 있습니다.

#!/usr/bin/env node

또한 스크립트 실행 권한을 부여해야 합니다:

chmod u x myscript.js
이제 스크립트는 독립적으로 실행할 수 있습니다:

./myscript.js arg1 arg2 ...

기타 주제

  • 표준 출력(stdout)으로 출력: console.log브라우저와 동일 콘솔은 전역 객체입니다 , 모듈이 아니므로 를 가져오기 위해 require()를 사용할 필요가 없습니다.
  • 표준 입력 읽기(stdin): process.stdin읽기 가능한 스트림입니다.process입니다. 전역 객체입니다.
  • 셸 명령 실행: child_process.exec().
관련 기사

를 통해
  1. 팁: Node.js 셸의 파일에서 소스 로드
  2. Node.js REPL이 시작될 때마다 코드 실행
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.