Как я могу обработать несколько строк вывода при запуске внешних процессов с Шелли?
Я ищу функцию типа 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 строк.
Поддерживает ли Шелли некоторую функциональность, чтобы справиться с вышеуказанным? Или, может быть, какая-то другая библиотека на Haskell для анализа выходных данных? Я думаю, это будет выглядеть примерно так putStrLn
но вместо вывода в IO ()
это будет вывод на [Text]
?
1 ответ
Решение
https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text.html
main :: IO ()
main = do
v <- shelly example
print $ Data.Text.lines v