【发布时间】:2017-05-24 23:25:38
【问题描述】:
我发现我的 node.js shell 脚本在 Windows 和 Linux 中的工作方式有所不同。我有一串使用 child_process 库同步执行的命令。
var cmd = `echo 'hello'
echo 'Stack'
echo 'Overflow'`
var exec = require('child_process').execSync;
var options = {
encoding: 'utf8'
};
console.log(exec(cmd, options));
在 Linux 中
这会按照我的预期执行所有 3 个 echo 语句和输出。
hello
Stack
Overflow
在 Windows 中
而在 Windows 中,我不知道它是否执行 3 次。我所知道的是只输出第一个echo 命令。
hello
为什么我会看到这种差异,我能否修复它,以使 Windows 脚本的输出方式与它在 Linux 上的输出方式相似?
【问题讨论】:
-
只是出于好奇,将
cmd更改为var cmd = "echo 'hello' && echo 'Stack' && echo 'Overflow'"会发生什么? -
不确定。当我回到我的电脑(在我的手机上)时,我可以尝试一下
-
那太好了!我会尝试一下,但我目前没有易于访问的 Windows 计算机。
-
我测试了它并且它有效!如果您对我为什么会很乐意授予最佳答案有很好的解释!
-
我不确定它为什么会起作用,但我可以猜测一下。如果您不介意,您的代码在每行后面加上
\n的输出是什么?
标签: node.js linux windows shell