[英]Nodejs shell script works fine in linux but not in Windows. Why won't it execute more than one command
我發現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上的輸出?
腳本可能是在Linux中創建的,因此具有LF(LineFold)\\ n行尾嗎? Windows則期望CRLF(CarrageReturn LineFold)\\ r \\ n。
當您將所選編輯器中的行尾更改為Windows樣式的行尾時,我敢打賭它會起作用。
您應該使用:
var cmd = "echo 'hello' && echo 'Stack' && echo 'Overflow'"
代替
var cmd = `echo 'hello'
echo 'Stack'
echo 'Overflow'`
我不太確定為什么會這樣,但我有一個猜測。
&&
僅在上一個命令的錯誤級別為0時執行此命令。
這意味着它將每行視為單獨的命令。 以您的方式,它(可能)將每行視為同一命令,並且由於某種原因,這導致它僅輸出第一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.