以下代码段执行grep
命令,并将输出分别绑定到stdout'
,stderr'
和errCode
。
main :: IO ()
main = do
let stdin' = ""
(errCode, stdout', stderr') <- readProcessWithExitCode "grep" ["search-term" ,"-nr", "/path/to/be/searched"] stdin'
putStrLn $ "stdout: " ++ stdout'
putStrLn $ "stderr: " ++ stderr'
putStrLn $ "errCode: " ++ show errCode
问题是stdout'
仅捕获搜索的第一个结果。我认为这是因为grep
类似于生成的进程,它将搜索结果一个文件提供给一个文件,直到完成为止。
问题:我需要将grep标准输出的整个输出绑定到stdout'
。这在Haskell中是否可行,如果是这样,那么这是一种惯用的方法吗?
编辑:事实证明问题不是我想象的那样。也就是说,我的目录中只有一个文件没有符号链接。我忘了使用-R
作为grep
的选项,因此搜索中没有遍历这些符号链接!问题已经解决。