簡體   English   中英

如何使用nodejs子進程exec運行unix diff命令?

[英]How do use nodejs childprocess exec to run the unix diff command?

我需要使用node來生成某些文件的差異。 我已經嘗試了diff npm軟件包 ,雖然效果很好,但是它的性能要比/ usr / bin /中的diff版本差很多。

當我嘗試使用exec運行diff命令時,它總是出錯。

var childProcess = require('child_process');

var cmd = "diff /path/to/file1.txt /path/to/file2.txt";
childProcess.exec(cmd, (error, stdout, stderr) => {
  if(error) {
    console.log(error);
  } else {
    console.log(stdout);
  }
});

輸出:

{ [Error: Command failed: /bin/sh -c diff /path/to/file1.txt /path/to/file2.txt
]
  killed: false,
  code: 1,
  signal: null,
  cmd: '/bin/sh -c diff /path/to/file1.txt /path/to/file2.txt' }

如果我自己在命令行上運行命令,它將運行正常。

我試過運行/usr/bin/diff而不是diff

我嘗試了各種不同形式的報價。

我使用完全相同的文件嘗試過的所有其他命令均有效。 catwc

有什么想法嗎?

威爾,我在回答我自己的問題。

如果發現差異, diff命令將返回失敗退出代碼。 因此,從未到達console.log(stdout)調用。 如果我忽略該錯誤,則一切正常。

var childProcess = require('child_process');
var cmd = "diff /path/to/file1.txt /path/to/file2.txt";
childProcess.exec(cmd, (error, stdout, stderr) => {
  console.log(stdout);
});

奇跡般有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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