将系统命令的结果绑定到Haskell中的变量

Geo*_*rge 5 haskell system

如何在Haskell中运行系统命令并将其结果(即标准输出)绑定到变量?在伪haskell我正在寻找类似以下的东西:

import System.Process

main = do output <- callCommand "echo hi"
          putStrLn output -- result: "hi"
Run Code Online (Sandbox Code Playgroud)

这不起作用.有类似的东西吗?

jam*_*idh 6

这是一些工作代码:

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
Run Code Online (Sandbox Code Playgroud)

正如Carsten所说,你可以使用readProcess,但我更喜欢这个版本,因为任何严肃的用法,你很快会对你的命令为什么无声地失败感到困惑(如果你在命令行中运行,stdout和stderr都是,当然,显示).