如何在 Haskell 中运行系统命令 和 将其结果(即标准输出)绑定(bind)到变量?在伪haskell中,我正在寻找类似以下的内容:
import System.Process
main = do output <- callCommand "echo hi"
putStrLn output -- result: "hi"
这不起作用。有没有类似的东西?
最佳答案
这是一些工作代码:
import System.Process
main :: IO ()
main = do
let stdin' = ""
(errCode, stdout', stderr') <- readProcessWithExitCode "echo" ["hi"] stdin'
putStrLn $ "stdout: " ++ stdout'
putStrLn $ "stderr: " ++ stderr'
putStrLn $ "errCode: " ++ show errCode
正如 Carsten 所指出的,您可以使用 readProcess,但我更喜欢这个版本,因为任何严重的使用,您很快就会对为什么您的命令静默失败感到非常困惑(如果您在命令行中运行,stdout 和 stderr 都是当然,如图所示)。
关于haskell - 将系统命令的结果绑定(bind)到 Haskell 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37107934/