在Haskell中执行系统命令

18

我该如何在 Haskell 中执行系统命令,例如 cp somefile somedestination

类似于 os.Exec 的东西。


https://dev59.com/c2kw5IYBdhLWcg3wrsrn - gliptak
4个回答

15

哈斯克尔 98 标准提供:

System.system :: String
              -> IO GHC.IO.Exception.ExitCode

执行一个命令。

不过,新的System.Process库更加实用,允许便携式的输入/输出重定向等操作。


请注意,如果您想要复制文件,应该使用 copyfile - Thomas M. DuBuisson
@ThomasM.DuBuisson:调用cp有什么不安全的地方,还是copyfile更简单? - amindfv
3
这是一个可移植性问题。你如何知道 cp 命令对于你当前的平台是正确的?你如何知道二进制文件在路径中?等等。 - Thomas M. DuBuisson
2
我无法解决这个函数。需要什么样的导入或限定?最终我使用了 System.Cmd.system - ApproachingDarknessFish
那绝对不是一个完整的例子。 - Philippe Fanaro

12
import System.Process

main = callCommand "cp somefile somedestination"

虽然它直接起作用,但您可能更喜欢来自System.Process模块的其他功能。


1
我认为应该是runCommand(我得到了“Not in scope: 'callCommand'”) - peer
不对,callCommand 是正确的 - runCommand 做了不同的事情。 - xeruf

3

我不是Haskell专家,但这个链接可能是你需要的。


2
请在答案中放置一个完整的示例以及链接。 - Philippe Fanaro

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接