在使用Shelly运行外部进程时,如何处理多行输出?

时间:2017-10-16 18:11:44

标签: haskell shelly

我正在寻找Text -> [Text]类型的函数,基本上会根据换行符拆分文本。但是我不能在\n上拆分,因为这可能会被转义,例如\\n,我不确定还有其他并发症。

Main.hs

{-# LANGUAGE OverloadedStrings #-}

import Data.Text (Text)
import Data.Text.IO
import Shelly

example :: Sh Text
example = run "./example.sh" []

main :: IO ()
main = do
  v <- shelly example
  Data.Text.IO.putStrLn v

example.sh

echo "test1\\n"
echo "test2"
echo "test3"

./example.sh的输出:

test1\n
test2
test3

所以这是3行的输出。

Shelly是否支持某些功能来处理上述问题?或者可能是其他一些Haskell库来解析输出?我想它看起来像putStrLn但是输出到IO ()而不是输出到[Text]

1 个答案:

答案 0 :(得分:0)

https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text.html#v:lines

main :: IO ()
main = do
  v <- shelly example
  print $ Data.Text.lines v