2017-10-14 132 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'