簡體   English   中英

Nodejs Shell腳本在Linux上運行良好,但在Windows中運行不正常。 為什么不執行多個命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM