25

gitbashで実行しているhaskellを使用していくつかのシェルスクリプトを作成していますが、それらのスクリプトから使用できるようにしたい既存のスクリプトが他にもいくつかあります。

たとえば、Mavenの目標を実行したり、git pullを実行したりしたいのですが、これらのツールと特別に統合する必要はありません。

これを行う方法はありますか?

4

4 に答える 4

28

を使用できます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)
于 2012-05-10T14:54:30.690 に答える
10

はい、可能です。process多くの便利な関数をエクスポートするpackageを使用できます。最も単純なものはSystem.Cmd.system、です。これは、シェルでアプリケーションを実行して、終了コードを生成できます。

モジュールには、より高度な機能も用意されていSystem.Processます。このモジュールを使用すると、プロセスを実行し、さまざまな方法で通信できます(配管の入力、終了コード、プロセスの停止の待機、環境の変更など)。

于 2012-05-10T14:58:05.407 に答える
7

もちろん。システムを使用して外部プロセスを呼び出すことから始めることができます。

より洗練された配管とプロセス制御は、System.Processライブラリからクロスプラットフォームの方法で利用できます。

最後に、シェルDSLを介してシェルスクリプトをHaskellに移植することを検討できます。

于 2012-05-10T14:55:14.953 に答える
7

Turtleは、このための非常に優れた最新のhaskellライブラリです。

于 2015-04-30T23:03:16.560 に答える