
christian.lean2:
I'm looking for a way to run an external program and get the results in haskell. Something similar to HSH but that will work in windows. I don't need anything too complex, just to provide the command to be run as a string and get the result as a string. Is this possible? One of the HSH examples is all I need:
runS $ "echo /etc/pass*" -> "/etc/passwd /etc/passwd-"
System.Process is your friend. E.g. import System.Process import Control.Exception import System.IO import System.Exit -- -- Run a normal shell command -- run :: String -> IO String run s = handle (fail . show) $ do (ih,oh,eh,pid) <- runInteractiveCommand s so <- hGetContents oh se <- hGetContents eh hClose ih ex <- waitForProcess pid case ex of ExitFailure e -> fail $ "Failed with status: " ++ show e _ | not (null se) -> fail se | otherwise -> return so *Process> run $ "echo *.hs" "Main.hs Process.hs Shell.hs\n" -- Don