2017-10-14 131 views
0
{-# LANGUAGE OverloadedStrings #-} 

import Turtle 

runSh :: Text -> IO() 
runSh x = view $ inshell x empty 

main :: IO() 
main = do 
    runSh "echo 'abcxyz'" 

我有,当执行输出上面的程序:如何从Haskell龟的进程捕获stdout和stderr输出?

Line "abcxyz" 

有没有一种方法,我可以捕捉到这些输出不输出到shell的标准输出?

所以基本上我想运行该过程并获得[Line]值,而不是IO操作中的()值。

回答

1

这可能与shellStrictWithErr

{-# LANGUAGE OverloadedStrings #-} 

import Turtle (empty, shellStrictWithErr, ExitCode) 
import Data.Text (Text) 

runSh :: Text -> IO (ExitCode, Text, Text) 
runSh x' = shellStrictWithErr x' empty 

main :: IO() 
main = do 
    (e, v, v') <- runSh "ls" 
    print e 
    print v 
    print v'