gitbashで実行しているhaskellを使用していくつかのシェルスクリプトを作成していますが、それらのスクリプトから使用できるようにしたい既存のスクリプトが他にもいくつかあります。
たとえば、Mavenの目標を実行したり、git pullを実行したりしたいのですが、これらのツールと特別に統合する必要はありません。
これを行う方法はありますか?
を使用できますSystem.Process
。たとえば、seq 1 10
シェルコマンドを実行します。
> 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)
はい、可能です。process
多くの便利な関数をエクスポートするpackageを使用できます。最も単純なものはSystem.Cmd.system
、です。これは、シェルでアプリケーションを実行して、終了コードを生成できます。
モジュールには、より高度な機能も用意されていSystem.Process
ます。このモジュールを使用すると、プロセスを実行し、さまざまな方法で通信できます(配管の入力、終了コード、プロセスの停止の待機、環境の変更など)。
もちろん。システムを使用して外部プロセスを呼び出すことから始めることができます。
より洗練された配管とプロセス制御は、System.Processライブラリからクロスプラットフォームの方法で利用できます。
最後に、シェルDSLを介してシェルスクリプトをHaskellに移植することを検討できます。
Turtleは、このための非常に優れた最新のhaskellライブラリです。