Haskell 中的管道字符串到 shell 命令

sam*_*m46 2 haskell pipe process

如何将字符串输入 shell 命令并获取它在 Haskell 中产生的输出?

例如,考虑到:

> myHaskellProg 
  "blah"

> myHaskellProg | wc
  4
Run Code Online (Sandbox Code Playgroud)

我想

> myHaskellProg
Run Code Online (Sandbox Code Playgroud)

4通过调用wc并打印结果来打印

我能够使用process's调用 shell 命令callCommand ,但如何通过管道将字符串传递给它并返回结果或 stderr?

Tho*_*son 5

您正在寻找System.Process并且可以使用该shell函数来创建进程的描述,然后用于readCreateProcess运行 shell 命令、提供标准输入并读取标准输出。

import System.Process
main :: IO ()
main =
  do result <- readCreateProcess (shell "ls") myHaskellString
     putStrLn result

myHaskellString :: String
myHaskellString = "string"
Run Code Online (Sandbox Code Playgroud)

  • 使用 readCreateProcessWithExitCode 捕获返回值和 stderr。 (4认同)