Pet*_*all 19 shell haskell ffi
我正在用haskell编写一些shell脚本,我正在gitbash中运行,但是我还希望能够从这些脚本中使用其他一些现有的脚本.
例如,我想运行maven目标或做一个git pull,但不必专门与这些工具集成.
有没有办法做到这一点?
ДМИ*_*КОВ 23
你可以用System.Process.例如,执行seq 1 10shell命令:
> import System.Process
> readProcess "seq" ["1", "10"] ""
"1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n"
it :: String
> readProcessWithExitCode "seq" ["1", "10"] ""
(ExitSuccess,"1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n","")
it :: (GHC.IO.Exception.ExitCode, String, String)
Run Code Online (Sandbox Code Playgroud)
对的,这是可能的.您可以使用processpackage,它会导出许多有用的函数.最简单的是System.Cmd.system,它可以在shell中运行某些应用程序,从而产生退出代码.
System.Process模块中也提供了更多高级功能.使用此模块,您可以运行进程并以多种方式与其进行通信(输入管道,退出代码,等待进程停止,修改其环境等).