child_process给出执行grep命令失败
我想在节点中使用child_process
来search文件的存在:
const { exec } = require('child_process'); exec('ls | grep "filename"', (err, result) => {...})
当文件名存在时,exec结果是好的。 但是当文件名不存在时,我得到一个错误:
命令失败:ls | grep“文件名”
在这种情况下,如何判断是执行命令时是否有错误,或者只是因为没有find结果?
编辑
感谢您不要以这种方式search文件的build议。 上面的代码不是实际的代码,只是一个演示我的问题与grep
的演示文稿。 在我的实际案例中,我正在通过任务假脱机程序在输出中search关键字,因此我使用了exec
和tsp -l | grep ...
tsp -l | grep ...
您可以通过查看callback中的err.code
的值来确定这一点。 它在Node.js文档中有更详细的logging。
由于pipe道中的最后一个命令是grep
,请查阅grep
页以获取完整的状态代码列表,以便恰当地分配您的逻辑。 在你的情况下,如果没有select行 (即“没有结果”), grep
将返回1的状态码,所以如果err.code === 1
,那么你知道没有文件匹配。
注意:正如@CharlesDuffy所提到的那样,应该通过
Node.js
文件系统API实现所需的文件操作。 利用这个答案作为exec
明确需要的情况的替代scheme。