我发现我的 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));
In Linux
这将执行所有 3 个echo
语句和输出正如我所期望的那样。
hello
Stack
Overflow
在 Windows 中
而在Windows中,我不知道它是否执行了3次。我所知道的是只有第一个echo
命令被输出。
hello
为什么我会看到这种差异?我可以修复它,以便 Windows 脚本输出与 Linux 上的输出类似吗?
你应该使用:
var cmd = "echo 'hello' && echo 'Stack' && echo 'Overflow'"
代替
var cmd = `echo 'hello'
echo 'Stack'
echo 'Overflow'`
我不太确定为什么会这样,但我有一个猜测。
&&
仅当前一个命令的错误级别为 0 时才执行此命令。
这意味着它将每一行视为单独的命令。
而按照您的方式,它(可能)将每一行视为相同的命令,并且无论出于何种原因,这都会导致它仅输出第一行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)