我想child_process在节点中使用搜索文件的存在:
const { exec } = require('child_process');
exec('ls | grep "filename"', (err, result) => {...})
Run Code Online (Sandbox Code Playgroud)
当文件名存在时, exec 结果很好。但是当文件名不存在时,我收到一个错误:
命令失败: ls | grep“文件名”
在这种情况下,我如何判断是执行命令时出错,还是仅仅因为找不到结果?
编辑
感谢您提供有关不要以这种方式搜索文件的建议。上面的代码不是实际的代码,而只是一个演示片段,说明了我的grep. 在我的实际情况下,我正在通过task spooler在输出中搜索关键字,因此我使用了exec和tsp -l | grep ...
您可以通过查看err.code回调中的值来确定这一点。它在Node.js文档中有更详细的记录。
由于管道中的最后一个命令是grep,请查阅grep联机帮助页以获取完整的状态代码列表以适当地分支您的逻辑。在您的情况下,如果没有选择任何行(即“没有结果”),grep将返回状态代码1,因此如果,则您知道没有匹配的文件。err.code === 1
注意:正如@CharlesDuffy 所提到的,应该首选通过
Node.jsFile System API实现您想要的文件操作。利用这个答案作为其中的替代办法exec是明确需要。