记录 Node 从管道输入参数的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const stdin = process.stdin;
let data = '';

stdin.setEncoding('utf8');

stdin.on('data', function (chunk) {
data += chunk;
});

stdin.on('end', function () {
console.log("Hello " + data);
});

stdin.on('error', console.error);

调用方式

1
$ echo "1 2" | node test.js

改为同步调用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* * Author: wxnacy([email protected])
* * Description:
* */

const stdin = process.stdin;

function pipeInput() {
return new Promise((resolve, reject) => {
let data = '';

stdin.setEncoding('utf8');

stdin.on('data', function (chunk) {
data += chunk;
});

stdin.on('end', function () {
resolve(data)
});

stdin.on('error', reject);

})
}

(async()=>{

try {

let data = await pipeInput()
console.log(`参数为:${data}`);
} catch (e) {
console.error(e)
}
})();
03-16 11:51