我有一个名为/path/to/shell_script.sh
的shell脚本文件,其中包含函数定义shell_function() { ...}
。
我希望能够像H readProcessWithExitCode shell_function [] ""
一样在Haskell中做一些事情,最终获得IO (String)
。
怎么做?
答案 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;每次来源代码。