Как мне избежать строки для команды оболочки в узле?

Одна или обе переменные являются строкой вместо числа. Это делает + выполнение конкатенации строки.

'2' + 2 === '22';  // true

2 + 2 === 4;  // true

Другие арифметические операторы / * - будут выполнять преобразование toNumber в строке (строках).

'3' * '5' === 15;  // true

Быстрый способ преобразования строки в число - использовать унарный оператор +.

+'2' + 2 === 4;  // true

... или с вашими переменными:

+x + +y
38
задан mikemaccana 10 January 2015 в 19:44
поделиться

1 ответ

Существует способ записи во внешнюю команду: process.createChildProcess ( документация ) возвращает объект с записью метод. createChildProcess не так удобен, потому что он не буферизует stdout и stderr, поэтому вам понадобятся обработчики событий для чтения вывода по частям.

var stdout = "", stderr = "";
var child = process.createChildProcess("someCommand");

child.addListener("output", function (data) {
    if (data !== null) {
        stdout += data;
    }
});
child.addListener("error", function (data) {
    if (data !== null) {
        stderr += data;
    }
});
child.addListener("exit", function (code) {
    if (code === 0) {
        sys.puts(stdout);
    }
    else {
        // error
    }
});

child.write("This goes to someCommand's stdin.");
-4
ответ дан 27 November 2019 в 01:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: