加载Shell脚本文件以在Haskell中访问它们的函数

时间:2016-10-28 18:16:01

标签: haskell

我有一个名为/path/to/shell_script.sh的shell脚本文件,其中包含函数定义shell_function() { ...}

我希望能够像H readProcessWithExitCode shell_function [] ""一样在Haskell中做一些事情,最终获得IO (String)

怎么做?

1 个答案:

答案 0 :(得分:3)

如果您有像

这样的shell脚本
#!/bin/bash

foo() {
    echo "foo"
}

您可以使用进程包中的readCreateProcess函数来获取脚本并一次执行该函数,如下所示:

module Main where

import System.Process

main :: IO ()
main = do
    -- I had to put the full path of the script for it to work
    result <- readCreateProcess ((shell ". /tmp/foo.sh && foo")) ""
    print result

此解决方案假定脚本仅执行定义函数和设置环境变量之类的操作,而不会运行不期望的&#34;有效的&#34;每次来源代码。