
I am able to use System.Cmd (system) to invoke a shell command and interpret the results. Please see the code below that works okay for one such command. (I invoke a program, passing two args.) I am wondering how to generalize this to do likewise for a series of commands, where the varying args (filenames, in this case) are in a list ('inOutLeafs'). I will also want to accumulate some results; probably just a failure count at this time. Any advice or pointers to examples would be much appreciated. Thanks in advance, -- Peter
run :: ... -> IO (Int) -- will return a fail count run -- some args to this function here... = do -- ... set up: inputLeafs, outputLeafs, etc.
-- zip two lists of filenames: let inOutLeafs = zip inputLeafs outputLeafs
-- the first pair for the first command: let (inFile1,outFile1) = head inOutLeafs
-- build 1st command using 1st pair of filenames: let cmd1 = ...
exitCode <- system cmd1 case (exitCode) of ExitSuccess -> do putStrLn $ "-- OK." return 0 ExitFailure failCnt -> do putStrLn $ "-- Failed: " ++ show failCnt return 1