我有一个bash脚本调用Haskell可执行文件,是否可以让Haskell exe返回一个值以使其可以存储为bash变量?
例如,假设我有两个文件:haskellFile.hs
和BashScript
。
(1)我像这样ghc -o exe haskellFile.hs
(2)在我的BashScript
中,它像这样./exe arg1 arg2
目前,我可以输出haskell文件,但是我希望它返回一个值,以便可以执行类似bashVar = ./exe arg1 arg2
这基本上是我的haskell文件目前的样子:
main :: IO()
main = do (arg1:arg2:_) <- getArgs
let returnValue = someFunction arg1 arg2
print $ returnValue -- But I want it to return a value
答案 0 :(得分:5)
程序可以通过以下渠道将信息发送到Shell:
exitWith
。putStr
/ putStrLn
/ print
发送信息到标准输出,hPutStr
/ hPutStrLn
/ hPrint
和stderr
发送信息去stderr。与其他fds的交流更多。如果您有兴趣,请这样说,我可以写出更多有关此内容。这些通道始终可以用于向外壳程序发送信息(当然,尽管您编写的任何外壳程序脚本都可以忽略以这种方式传达的任何信息!)。另外,shell可以在调用程序之前设置其他通道。例如命名管道,套接字,dbus,共享内存等...