Dette eksempel viser en måde at tage imod input fra kommandolinien.
Opret filen readline-demo.js
med følgende indhold.
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const getLine = (function () {
const getLineGen = (async function* () {
for await (const line of rl) {
yield line;
}
})();
return async () => ((await getLineGen.next()).value);
})();
const main = async () => {
console.log('Type value for a');
let a = Number(await getLine());
console.log(`Got a: ${a}`);
console.log('Type value for b');
let b = Number(await getLine());
console.log(`Got b: ${b}`);
console.log('Result of a+b');
console.log(a + b);
process.exit(0);
};
main();
Nu kan du køre eksemplet med denne kommando:
node readline-demo.js
Når eksemplet kører bliver der bedt om først en værdi for variablen a
, dernæst for variablen b
.
Hvis eksemplet køres og værdierne 42 og 31 indtastes, giver programmet dette output.
readline-stdin$ node .\readline-demo.js
Type value for a
42
Got a: 42
Type value for b
31
Got b: 31
Result of a+b
73
readline-stdin$
Hvis du er på windows og bruger powershell kan du også give input til stdin direkte på kommandolinien.
echo "42`n31" | node readline-demo.js
Bemærk powershell har en række escape sekvenser der bruges til at insætte special tegn, `n bruges at indsætte et linieskift i en streng.
Bruger du mac eller linux kan du opnå samme resultat med denne kommando.
printf "42\n31\n" | node readline-demo.js